程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 sqlAlchemy 和多对多关系填充数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 sqlAlchemy 和多对多关系填充数据库?

开发过程中遇到使用 sqlAlchemy 和多对多关系填充数据库的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 sqlAlchemy 和多对多关系填充数据库的解决方法建议,希望对你解决使用 sqlAlchemy 和多对多关系填充数据库有所启发或帮助;

我正在烧瓶中创建 API 休息区以进行测试。我想在任何事情之前添加一些数据。这就是为什么我创建了两个 csv,一个用于“组”(大小 3),另一个用于“学生”(大小 90)。你可以在这里看到它们:

使用 sqlAlchemy 和多对多关系填充数据库

使用 sqlAlchemy 和多对多关系填充数据库

他们共享多对多的关系,这让我怀疑如何去做。我找到了一个答案 here,但它是一张桌子。为简单起见,我将学生分成 3 组,每组 30 人(是的,这是多对多,但学生是否只属于一个组并不重要)。我不知道是否应该创建带有 ID 的第三个数据集,但主要问题是如何使用共享多对多关系的 csv 填充数据库。

到目前为止,您可以在这里看到我的代码:

from . import db
from sqlalchemy import table,ForeignKey
 
association_table = table('groupstudent',db.Metadata,db.column('group_ID',ForeignKey('group.ID'),priMary_key = TruE),db.column('student_ID',ForeignKey('student.ID'),priMary_key = TruE))
 
class Group(db.Model):
   __tablename__ = 'group'
   ID = db.column(db.Integer,priMary_key=TruE)
   subject = db.column(db.String(50))
   name = db.column(db.String(50))
   description = db.column(db.String(200))
   language = db.column(db.String(6))
   age_min = db.column(db.Integer)
   age_max = db.column(db.Integer)
   students = relationship("student",secondary=association_tablE)
 
class student(db.Model):
   __tablename__ = 'student'
   ID = db.column(db.Integer,priMary_key=TruE)
   name = db.column(db.String(50))
   surname = db.column(db.String(50))
   ccl = db.column(db.float())
   CMCT = db.column(db.float())
   CD = db.column(db.float())
   CPAA = db.column(db.float())
   CSC = db.column(db.float())
   SIE = db.column(db.float())
   CEC = db.column(db.float())

并在“init”中:

def create_database(app):
   if not path.exists('/website'+db_name):
       db.create_all(app=app)
       print('Created!')

谢谢

更新

我自己找到了解决方案。这里的代码,它不是最好的,但用于测试它的工作原理:

        db.create_all(app=app)
        #students
        file_name = 'students.csv'
        df = pd.read_csv(file_name)
        ENGIne = db.get_ENGIne(app=app)
        df.to_sql(con=ENGIne,index_label='ID',name='student',if_exists='replace')
        #Groups
        file_name = 'groups.csv'
        df = pd.read_csv(file_name)
        df.to_sql(con=ENGIne,name='group',if_exists='replace')
        #Many-to-Many relation
        session = Session(ENGInE)
        group0 = session.query(Group).filter(Group.ID == 0).first()
        group1 = session.query(Group).filter(Group.ID == 1).first()
        group2 = session.query(Group).filter(Group.ID == 2).first()
        rows0 = session.query(student).filter(student.ID >= 0,student.ID <=29).all()
        rows1 = session.query(student).filter(student.ID >= 30,student.ID <=59).all()
        rows2 = session.query(student).filter(student.ID >= 60,student.ID <=89).all()
        
        group0.students = [r for r in rows0]
        group1.students = [r for r in rows1]
        group2.students = [r for r in rows2]
        session.commit()
        print('Created Database!')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用 sqlAlchemy 和多对多关系填充数据库全部内容,希望文章能够帮你解决使用 sqlAlchemy 和多对多关系填充数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。