Python Flask数据库集成:SQLite与MySQL的使用

发布时间:2026/10/23 2:03:34

Python Flask数据库集成:SQLite与MySQL的使用 在Python Web开发中数据库的集成是非常重要的一个环节它能够实现数据的持久化存储让我们的应用可以更好地管理和处理数据。今天我们就来学习如何使用Flask - SQLAlchemy扩展将SQLite和MySQL数据库集成到Flask应用中并进行基本的数据库操作。目录核心技术点Flask - SQLAlchemy扩展的使用实操模块集成SQLite和MySQL数据库集成SQLite数据库集成MySQL数据库数据库操作增删改查增加数据删除数据修改数据查询数据问题解决数据库连接错误数据操作异常总结核心技术点Flask - SQLAlchemy扩展的使用Flask - SQLAlchemy是Flask的一个扩展它为SQLAlchemy库提供了简单的封装让我们可以更方便地在Flask应用中使用数据库。SQLAlchemy是一个强大的数据库抽象层它允许我们使用Python代码来操作各种数据库而不需要直接编写SQL语句。简单来说Flask - SQLAlchemy就像是一个桥梁连接了我们的Flask应用和数据库让我们可以用Python代码来完成数据库的各种操作。实操模块集成SQLite和MySQL数据库集成SQLite数据库下面是一个使用Flask - SQLAlchemy集成SQLite数据库的完整Python代码示例fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemy appFlask(__name__)# 配置SQLite数据库的连接地址app.config[SQLALCHEMY_DATABASE_URI]sqlite:///test.dbdbSQLAlchemy(app)# 定义一个模型类对应数据库中的表classUser(db.Model):iddb.Column(db.Integer,primary_keyTrue)namedb.Column(db.String(80))emaildb.Column(db.String(120),uniqueTrue)def__repr__(self):returnUser %r%self.name# 创建数据库表withapp.app_context():db.create_all()app.route(/)defindex():returnHello, World!if__name____main__:app.run(debugTrue)在这个示例中我们首先导入了Flask和Flask - SQLAlchemy库然后创建了一个Flask应用实例。接着我们通过app.config配置了SQLite数据库的连接地址这里使用的是相对路径sqlite:///test.db表示在当前目录下创建一个名为test.db的SQLite数据库文件。然后我们定义了一个User模型类它继承自db.Model这个类对应数据库中的一个表。在类中我们定义了三个字段id、name和email并指定了它们的数据类型和约束条件。最后我们使用db.create_all()方法创建了数据库表。集成MySQL数据库下面是一个使用Flask - SQLAlchemy集成MySQL数据库的完整Python代码示例fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemy appFlask(__name__)# 配置MySQL数据库的连接地址app.config[SQLALCHEMY_DATABASE_URI]mysqlpymysql://username:passwordlocalhost/testdbdbSQLAlchemy(app)# 定义一个模型类对应数据库中的表classProduct(db.Model):iddb.Column(db.Integer,primary_keyTrue)namedb.Column(db.String(80))pricedb.Column(db.Float)def__repr__(self):returnProduct %r%self.name# 创建数据库表withapp.app_context():db.create_all()app.route(/)defindex():returnHello, World!if__name____main__:app.run(debugTrue)在这个示例中我们同样导入了Flask和Flask - SQLAlchemy库创建了一个Flask应用实例。不同的是我们通过app.config配置了MySQL数据库的连接地址这里需要替换username、password和testdb为你自己的数据库用户名、密码和数据库名。然后我们定义了一个Product模型类它对应数据库中的一个表。最后我们使用db.create_all()方法创建了数据库表。数据库操作增删改查增加数据# 创建一个新的用户对象new_userUser(nameJohn,emailjohnexample.com)# 将用户对象添加到数据库会话中withapp.app_context():db.session.add(new_user)# 提交会话将数据保存到数据库db.session.commit()在这个示例中我们首先创建了一个新的User对象然后将它添加到数据库会话中最后通过db.session.commit()方法将数据保存到数据库。删除数据# 查询要删除的用户withapp.app_context():user_to_deleteUser.query.filter_by(emailjohnexample.com).first()ifuser_to_delete:# 将用户对象从数据库会话中删除db.session.delete(user_to_delete)# 提交会话将删除操作保存到数据库db.session.commit()在这个示例中我们首先查询要删除的用户然后将它从数据库会话中删除最后通过db.session.commit()方法将删除操作保存到数据库。修改数据# 查询要修改的用户withapp.app_context():user_to_updateUser.query.filter_by(emailjohnexample.com).first()ifuser_to_update:# 修改用户的姓名user_to_update.nameJane# 提交会话将修改操作保存到数据库db.session.commit()在这个示例中我们首先查询要修改的用户然后修改它的姓名最后通过db.session.commit()方法将修改操作保存到数据库。查询数据# 查询所有用户withapp.app_context():all_usersUser.query.all()foruserinall_users:print(user)在这个示例中我们使用User.query.all()方法查询所有用户并将结果打印出来。问题解决在使用Flask - SQLAlchemy集成数据库的过程中可能会遇到一些问题比如数据库连接错误、数据操作异常等。下面是一些常见问题的解决方法数据库连接错误如果出现数据库连接错误首先要检查数据库的连接地址是否正确用户名和密码是否匹配。如果是MySQL数据库还要确保MySQL服务器已经启动并且允许远程连接。数据操作异常如果出现数据操作异常要检查数据类型是否匹配约束条件是否满足。比如如果一个字段被定义为唯一约束那么插入重复的数据就会导致异常。总结通过学习本节内容我们掌握了如何使用Flask - SQLAlchemy扩展将SQLite和MySQL数据库集成到Flask应用中并进行基本的数据库操作。这些技能可以帮助我们在Flask应用中实现数据的持久化存储让我们的应用更加完善。掌握了Python Flask数据库集成的内容后下一节我们将深入学习如何在Flask应用中使用表单进一步完善对本章Python Web开发基础主题的认知。
延伸阅读

更多相关文章

2026/10/23 2:03:34

Nginx简介与应用场景:从原理到实战案例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/23 3:03:40

同一批股票只有少数空值:如何区分个股停牌与行情接口异常

**一句话结论:**批量行情中少数标的为空,既可能是停牌或非交易日等合理情况,也可能是请求失败、权限问题或数据处理异常;应先核对请求和交易日,再单独重查标的,不能把所有空值统一补零或直接删除。 1. 为什…

2026/10/23 3:03:40

I2C——速度与占空比

如何选择速度?在STM32CubeMX中配置I2C时,我们会看到有以下速度选项,Standard和Fast(其实还有Fast plus,不过我这个是STM32F103ZET6,不支持),该如何选择?一般情况下&#…

2026/10/23 3:03:40

Linux 学习笔记(九):自动化构建神器 Make 与 Makefile

一、 为什么需要 Makefile?上一节学了 GCC 编译,但如果一个项目有几十个源文件,且每次只改了一个文件,手动敲 gcc 命令重新编译所有文件是非常低效的。Makefile 解决了两个大问题:把复杂的编译命令封装起来&#xff0c…

2026/10/23 3:03:40

文件定位、文件IO

标准io读写归纳总结fputs和fgets最常用文件定位fseek ftell rewindfseek若从末尾开始向后偏移,则偏移多少,系统自动补零多少示例:ftell示例:rewind示例:练习:复制文本文件内容数一个文件里面字母a~z共出现多…

2026/10/23 3:03:40

边缘AI进入建筑后,WiFi Halow技术帮集成商搞定带宽、距离和功耗

边缘AI正在改变数据在建筑里的流动方式,让建筑变得越来越智能。视频监控能实时认出人、车辆和异常活动;门禁系统能把身份验证、数据分析和自动反应结合起来;空调和供暖系统会根据房间里有没有人来调节能耗;环境传感器能在空气质量…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑