新用户注册入口 老用户登录入口

[转载]flask 写数据mysql_flask 创建数据提交到mysql中的方式

文章作者:转载 更新时间:2023-11-19 23:52:58 阅读数量:111
文章标签:数据提交实例化模型类表字段赋值事务处理批量插入
本文摘要:本文介绍了在Python Flask框架下向MySQL数据库进行数据提交的两种方法。首先,通过实例化模型类(如Student和Grade),为表字段赋值后使用`db.session.add()`添加对象至会话,并通过`db.session.commit()`实现事务性提交。第二种方式实现了批量插入,包括以列表形式创建多个对象实例并调用`db.session.add_all()`一次性提交多个记录,以及通过字典传入多个值来构建对象并执行批量插入。两种方法均涉及事务处理,确保了数据的一致性和完整性。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/weixin_39765697/article/details/113349707。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

有几种方式可以提交到mysql中,可以单次,可以多次

1. 实例化表,将表中的字段赋值,提交到数据库

@stu.route('/createstu/')

def create_stu():

stu = Student()

stu.s_name = '小骨头%d' % random.randrange(1000)

stu.s_age = '%d' % random.randrange(20)

try:

db.session.add(stu)

db.session.commit()

# 事务性: 原子性, 一致性, 隔离性, 自由性

return '创建学生成功'

except:

db.session.rollback()

2.先在models.py里初始化类

def __init__(self, name, desc):

self.g_name = name

self.g_desc = desc

(1)第二种方式, 以列表的形式值创建

if request.method == 'POST':

username1 = request.form.get('username1')

age1 = request.form.get('age1')

username2 = request.form.get('username2')

age2 = request.form.get('age2')

stu1 = Student(username1, age1)

stu2 = Student(username2, age2)

stus_list = []

stus_list.append(stu1)

stus_list.append(stu2)

db.session.add_all(stus_list)

db.session.commit()

return '创建成功'

(2)第二种方式(其实是第一种方式的变种), 前面是用字典来传入值

可以一次传入多个值

@grade.route('/creategrade/', methods=['GET', 'POST'])

def create_grade():

names = {

'python': '人生苦短,我用python',

'h5': '我是\(^o^)/~',

'java': '看我神威,无坚不摧',

'go': 'gogogo,那是go'

}

grades_list = []

for key in names.keys():

grade = Grade(key, names[key])

grades_list.append(grade)

db.session.add_all(grades_list)

db.session.commit()

return '创建班级表成功'

本篇文章为转载内容。原文链接:https://blog.csdn.net/weixin_39765697/article/details/113349707。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
ORM(对象关系映射)ORM是一种编程技术,它将关系型数据库的数据结构与面向对象编程语言中的对象模型进行关联。在Python Flask框架中通过SQLAlchemy实现ORM,可以将数据库表的字段对应到类的属性上,使得开发者能够以操作对象的方式来操作数据库记录,无需直接编写SQL语句。例如,在文章中实例化Student和Grade类的过程,就是将数据模型映射为数据库表结构的过程。
Flask-SQLAlchemyFlask-SQLAlchemy是Flask框架的一个扩展库,它提供了对SQLAlchemy的支持,使得Flask应用能够更方便地与各种关系型数据库进行交互。在本文中,通过使用Flask-SQLAlchemy,开发人员可以通过定义Python类来表示数据库中的表,并利用其提供的会话管理、事务处理等功能实现数据的增删改查操作。
事务处理事务处理是数据库系统中的核心概念之一,用于保证数据库操作的原子性、一致性、隔离性和持久性(ACID原则)。在Python Flask框架结合MySQL数据库的操作中,通过`db.session.commit()`提交事务和`db.session.rollback()`回滚事务的方式,确保了在一系列数据库操作过程中,要么所有更改全部成功并永久保存,要么在发生错误时撤销所有更改,以维护数据的一致性和完整性。
批量插入批量插入是指一次性向数据库表中插入多条记录的操作。在文中提及的第二种方式中,通过创建多个对象实例并将它们添加到一个列表中,然后调用`db.session.add_all(stus_list)`或`db.session.add_all(grades_list)`方法,实现了批量插入功能,相比单个插入,这种方式能有效提高数据库操作的性能,尤其是在需要插入大量数据的场景下。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在深入探讨了Python Flask框架下如何实现MySQL数据库的单次和批量数据提交之后,我们可以进一步关注现代Web开发中数据库操作的优化策略与最佳实践。近期,随着微服务架构和容器化部署的普及,数据库事务处理的性能与一致性问题愈发受到开发者们的重视。
例如,一篇来自InfoQ的技术文章《利用SQLAlchemy进行高效且安全的数据库操作》详细阐述了如何在实际项目中结合Flask-SQLAlchemy更好地管理数据库会话,包括事务隔离级别设置、批量插入优化以及错误回滚机制等深度内容。文中引用了真实案例分析,并给出了代码实例,帮助读者理解如何在高并发场景下保证数据库操作的高性能与数据完整性。
另外,针对Python后端开发领域,一篇名为《Python ORM框架实战:从基础到进阶》的教程则系统性地介绍了ORM(对象关系映射)技术在简化数据库操作、提升开发效率上的作用,不仅限于Flask-SQLAlchemy,还涵盖了Django ORM以及其他第三方库,为开发者提供了更多元化的解决方案。
此外,值得关注的是,随着云原生时代的到来,云服务商如AWS、阿里云等也推出了诸多关于数据库优化的服务和技术支持。例如,Amazon RDS提供的批量插入最佳实践指南,指导用户如何在云环境中有效利用资源,减少网络延迟,提高数据库写入速度,这对于正在使用Flask与MySQL构建应用的开发者来说,具有极高的参考价值。
综上所述,对于Python Flask开发者而言,在熟练掌握基本的数据提交方法后,持续关注数据库操作的最新优化技术和行业动态,将有助于打造出更稳定、高效的Web应用程序。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
rm -rf dir/* - 删除目录下所有文件(慎用)。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
基于Redis的分布式锁互斥性与可靠性实现及命名空间与原子性保障 04-22 可自定义刻度动画的jQuery进度条插件 02-07 jQuery和css3网站操作提示向导插件 12-28 jQuery创意响应式两栏滚动幻灯片特效 11-30 带视频播放的全屏轮播图布局特效 09-07 黑色炫酷个人摄影师网站通用模板下载 01-20 Cassandra中哈希分区与范围分区策略:数据分布、Murmur3Partitioner与负载均衡实践 11-17 [转载]java培训后好找工作吗 11-13 响应式环保包装盒设计公司网站静态模板 11-04 本次刷新还10个文章未展示,点击 更多查看。
中文建筑工程公司静态html网站模板下载 07-03 红色大气高端特色餐厅加盟网站模板 06-21 Vue.js 中的数据绑定与取消绑定:事件监听器、$destroy() 方法及 v-model 指令的运用与虚拟DOM、组件销毁的关系解析 06-20 响应式游戏应用商店单页网站html模板 06-15 自考大学通用模板下载 06-13 jqtimeline.js-简单又好用的jquery时间轴插件 06-04 [转载]Java Work 05-26 红色简洁电影售票平台网站html模板 05-02 投资集团项目展示页面网站HTML5模板 03-22 soulmate粉色干净浪漫唯美婚礼单页响应式网站模板 03-07 页面滚动时动态为元素添加class的jQuery插件 03-05
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"