flask 批量插入数据到数据库

发布于:2024-05-22 ⋅ 阅读:(171) ⋅ 点赞:(0)

方式一(推荐):db.session.bulk_insert_mappings(User, users)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:tmp/test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)

@app.route('/insert_data', methods=['POST'])
def insert_data():
    users = [
        {'id': 1, 'name': 'User1'},
        {'id': 2, 'name': 'User2'},
        {'id': 3, 'name': 'User3'},
        # ...
    ]
    db.session.bulk_insert_mappings(User, users)
    db.session.commit()
    return 'Data inserted successfully'

首先定义一个User模型,然后在insert_data路由中,创建了一个用户列表,每个用户都是一个字典,然后调用bulk_insert_mappings()方法将这些用户插入到数据库中。

注意,bulk_insert_mappings()方法的第一个参数是模型类,第二个参数是一个包含映射的列表。每个映射都是一个字典,其中的键是模型的属性名,值是要插入的值。

最后,调用commit()方法提交事务,将数据保存到数据库中。

方式二:db.session.add_all()

使用db.session.add_all()方法批量插入数据到数据库。这个方法接受一个模型对象的列表,然后将这些对象添加到当前的session中。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:tmp/test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)

@app.route('/insert_data', methods=['POST'])
def insert_data():
    users = [
        User(id=1, name='User1'),
        User(id=2, name='User2'),
        User(id=3, name='User3'),
        # ...
    ]
    db.session.add_all(users)
    db.session.commit()
    return 'Data inserted successfully'

首先定义了一个User模型,然后在insert_data路由中,创建用户对象的列表,然后调用add_all()方法将这些用户添加到当前的session中。

最后,调用commit()方法提交事务,将数据保存到数据库中。

区别:

注意,与bulk_insert_mappings()方法不同,add_all()方法需要创建模型对象,这可能会消耗更多的内存和CPU资源。如果需要插入大量的数据,bulk_insert_mappings()方法可能会更高效。


网站公告

今日签到

点亮在社区的每一天
去签到