首页 > 解决方案 > 在 Flask SQLAlchemy 中将数据插入到具有一对多关系的多个表中

问题描述

所以我有 3 个表,每个表都有一对多的关系: 1 个父母 -> 2 个孩子 2 个孩子每个有 3 个孙子,这使得 1 个父母 -> 6 个孙子

当我创建 2 个子项下的 1 个父项时,如何创建 6 个孙子项按各自的子项进行区分?这是我键入 1 个父对象时我想要的数据库中的内容的说明:

在此处输入图像描述

下面是我的代码:

模型.py

class Parent(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))

    parents_info = db.relationship('Children', backref='parents')

class Children(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    asset_amount = db.Column(db.Integer())

    parents_id = db.Column(db.Integer, db.ForeignKey('parents.id'))

    children_info = db.relationship('Grandchildren', backref='child')

class Grandchildren(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120))
    gender = db.Column(db.String(120))

    children_id = db.Column(db.Integer, db.ForeignKey('children.id'))

build_db.py

def build_sample_db():
    db.create_all()

    # Add to Parent table
    parent = Parent()
    parent.name = "Jack Sparrow"

    db.session.add(parent)

    # Add to Children table
    children_name = ['Hulk','Ironman']
    amount = ['300','500000']

    children_list = []
    for i in range(len(fraudster_name)):
        children = Children()
        children.name = children_name[i]
        children.asset_amount = amount[i]
        children.parents = parent

        db.session.add(children)


    ### Correct me if I'm wrong at formatting the list
    grandchildren_name = [['Hulk_one', 'Hulk_two', 'Hulk_three'], ['Ironman_one', 'Ironman_two', 'Ironman_three']]
    gender = [['female','female','male'], ['female','male','male']]
    ### How do I loop through my grandchildren to put into database

    db.session.commit() 
    return 

任何人都请告诉我循环部分,或者如果我编码错误。如果Grandchildren表中有多个列,我可以想象事情会更复杂。非常感谢您的帮助!

标签: pythonfor-loopsqlalchemyflask-sqlalchemy

解决方案


推荐阅读