python - 在 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表中有多个列,我可以想象事情会更复杂。非常感谢您的帮助!
解决方案
推荐阅读
- android - 面临构建颤振工具的问题......同时更新颤振
- vba - 远程服务器机器不存在或不可用”
- sql - 如何为以下要求构建 SQL 查询?
- javascript - 声明增量 Javascript 变量
- java - java.lang.RuntimeException:无法启动活动 ComponentInfo。二进制 XML 文件第 8 行:膨胀类 com.mapbox.vision.view.VisionView 时出错
- javascript - 如何在标题上添加波纹效果
- java - 集成测试中@DirtiesContext 和 FlywayConfig bean 组合出现异常
- autodesk-forge - 欧特克锻造。如何模糊选定对象以外的对象?
- android-studio - 更新/安装最新的 Flutter 包 (pubspec.yaml)
- java - 在hibernate vs JDBC或mybatis之间选择的最佳实践仅在数据库中插入而在java中的表中没有任何关系