要一次写入大量的一对多三级关系表并提高速度,可以使用数据库的批量插入功能。在 Flask 中,可以使用 SQLAlchemy 库来操作数据库。

假设有三个模型:Parent、Child 和 Grandchild,它们之间存在一对多的关系。

首先,我们需要创建一个批量插入的函数,可以接受一个包含多个关系数据的列表作为参数,然后使用 SQLAlchemy 的 session.bulk_insert_mappings() 方法批量插入数据。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_database_uri'
db = SQLAlchemy(app)

class Parent(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    children = db.relationship('Child', backref='parent')

class Child(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))
    grandchildren = db.relationship('Grandchild', backref='child')

class Grandchild(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    child_id = db.Column(db.Integer, db.ForeignKey('child.id'))

def bulk_insert_relationships(relationships):
    with app.app_context():
        db.session.bulk_insert_mappings(Child, relationships)
        db.session.commit()

if __name__ == '__main__':
    relationships = [
        {'name': 'Child1', 'parent': {'name': 'Parent1'}, 'grandchildren': [{'name': 'Grandchild1'}, {'name': 'Grandchild2'}]},
        {'name': 'Child2', 'parent': {'name': 'Parent2'}, 'grandchildren': [{'name': 'Grandchild3'}, {'name': 'Grandchild4'}]},
        # more relationships...
    ]
    bulk_insert_relationships(relationships)

上述代码中,我们定义了三个模型:Parent、Child 和 Grandchild,并且定义了它们之间的关系。然后,我们创建了一个批量插入的函数 bulk_insert_relationships(),它接受一个包含多个关系数据的列表作为参数。在函数内部,我们通过 db.session.bulk_insert_mappings() 方法批量插入数据。

if __name__ == '__main__': 中,我们创建了一个包含多个关系数据的列表,并调用 bulk_insert_relationships() 函数来插入数据。

这样,我们就可以一次写入大量的一对多三级关系表,并且通过批量插入的方式提高速度。

Flask 批量插入一对多三级关系表提升速度 - Python SQLAlchemy 示例

原文地址: https://www.cveoy.top/t/topic/b7Vo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录