大佬教程收集整理的这篇文章主要介绍了使用 sqlAlchemy 和多对多关系填充数据库,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在烧瓶中创建 API 休息区以进行测试。我想在任何事情之前添加一些数据。这就是为什么我创建了两个 csv,一个用于“组”(大小 3),另一个用于“学生”(大小 90)。你可以在这里看到它们:
他们共享多对多的关系,这让我怀疑如何去做。我找到了一个答案 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,请注明来意。