flask 批量插入数据到数据库

方式一(推荐):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()方法可能会更高效。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dm72是由DM72团队开发的基于PHP+MYSQL的网站管理系统,可以在各种服务器环境下运行,全站内容可以自动生成HTML,本系统可以支持文章图文混排,批量插入图片,批量添加FLASH和其他媒体文件,适合各种资讯类网站和动漫类网站(如我们的www.dm72.com).有更多问题与建议,欢迎来我们的论坛讨论 http://bbs.dm72.netDm72网站管理系统优点:简单实用 你不懂程序一样可以建设出漂亮的功能强大的网站开放源码 如果你了解HTML就可以自己做出漂亮的模板,了解PHP你就可以进行二次开发,使系统更适合自己。Dm72网站管理系统功能:网站信息配置:网站基本信息配置;网站功能选项配置;用户选项配置;另有邮件服务器选项等 (与论坛整合也在这里设置)网站频道管理:管理网站的各个频道的功能模块,如文章、下载、图片和留言等频道。频道可分为系统内部频道与外部频道二类。网站广告管理:可以发布、修改和删除网站广告。广告生成为静态JS文件,以方便更新和加快显示速度。可以设置广告版位,广告版位支持网络广告通用标准。(可以直接在后台添加广告)友情连接管理:系统具备管理、审核其它网站申请的友情链接功能,可执行添加、修改、删除等操作.网站公告管理:可以发布、修改和删除网站公告。可以设置为频道共用公告,也可以发布各频道不同的公告。网站调查管理:可以发布、修改和删除网站调查。可以设置为频道共用调查,也可以发布各频道不同的调查。网站风格管理:风格模板是控制整个网站在前台显示时看到的字体、风格、图片等,通常是用css网页样式语句来进行设计和控制的。系统具有自定义CSS样式的功能,并随时可以修改样式。网站通用模版管理:第一次安装系统请生成网站首页。首页、栏目页、内容页、专题页……都可以生成完全的HTML页面(评论和点击数统计除外)。(首页可以直接调用论坛内容)网站通用关键字管理:为整个系统定义与信息相关的关键字,在添加文章时提供快捷的选取功能。自定义标签管理:为整个系统的公共部分统一定义,并需在模版中引用对应标签,以统一管理,省去重复定义。网站日志管理:显示详细的网站信息,可查看网站日志,了解网站操作信息。字符过滤:设定一些敏感的关键词,在用户发表评论时进行替换,或者直接去掉。添加水印:(可以自己设定图片为水印添加到指定的文件夹里的图片上)管理员管理:系统具有强大的网站权限管理,可设置管理员详细权限,如增删管理员和指定详细的管理权限,(使网站的管理分级分类多人共同管理)。会员管理:本功能可以详细管理与设置网站注册用户的信息与权限。邮件管理:可以直接在论坛后台给信箱发送优件。还可以选择邮件模板数据。作者管理:可以添加作者,删除作者,方便发布文章时候直接选择收藏管理:用户可以把喜欢的文章 收藏起来方便下次访问生成管理:可以在这里进行首页生成,特定页面生成,(部分作品全部作品生成)评论管理:可以对文章的评论进行审核 回复 删除 等操作会员组管理:用户组是用户账户的集合,通过创建用户组,赋予相关用户享有授予组的权力和权限。垃圾短信清理:系统提供了短消息功能,(您也可以撰写短消息,与本站内的注册用户进行交流。)备份数据库:系统将备份数据库,以备数据库出现问题时能进行恢复操作。恢复数据库:本功能将从系统备份的数据库中恢复数据库。优化数据库:将网站系统数据可进行优化,数据表优化可以去除数据文件中的碎片,使记录排列紧密,提高读写速度。系统初始化:将网站系统进行初始化,指定数据库内容的数据将会被清空。请慎用此功能,因为一旦清除将无法恢复。总之,DM72的强大会让你惊讶的,你完全可以通过仅仅在后台的设置与修改,就能做出风格不同漂亮的网站来。
MCU Flash是一种用于嵌入式系统的非易失性存储器,通常用于保存历史数据。它可以通过简单的数据库实现数据的持久化存储和读取。 首先,我们可以在MCU Flash中创建一个数据表来存储历史数据。每个数据表可以有多个字段,比如时间戳、传感器数据等等。通过定义合适的数据格式和存储结构,我们可以很容易地在MCU Flash中编写和读取数据。 当有新的历史数据到达时,我们可以将其写入MCU Flash中的数据表中。这可以通过将新数据添加到数据表的末尾来实现。如果数据表已满,我们可以使用循环缓冲区的方式,覆盖最旧的数据。同时,我们还可以记录数据表的大小、索引和其他必要的元数据,以便后续的读取和管理。 对于数据的读取,我们可以按照时间顺序或者其他指定的条件从MCU Flash中读取数据。通过解析数据表中的数据结构和元数据,我们可以轻松地按需读取历史数据。 为了提高数据的可靠性和防止数据丢失,我们可以使用一些技术来进行数据备份和错误检测。比如使用冗余校验码(如循环冗余校验码)进行数据完整性校验,或者使用数据备份和恢复机制来应对硬件故障。 总之,MCU Flash可以作为一个简单的数据库来保存历史数据。通过定义合适的数据结构和元数据,并采用适当的数据存储和读取方法,我们可以实现数据的持久化存储和读取,从而方便地处理历史数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值