Python Flask-SQLAlchemy 连接 MySQL 数据库完整流程
本文详细介绍如何在 Python Flask 项目中通过 Flask-SQLAlchemy 扩展连接 MySQL 数据库。内容涵盖环境安装、数据库 URI 配置、SQLAlchemy 实例化、ORM 模型定义及数据表的创建,最后演示了基本的增删改查操作,帮助开发者快速掌握 Flask 数据库集成流程。
安装依赖包
第一步,安装必要的依赖包。
执行命令:pip install flask-sqlalchemy
执行命令:pip install pymysql
配置数据库连接
第二步,进行数据库连接配置。
使用 Flask-SQLAlchemy 扩展操作数据库时,首要任务是通过 URL 建立数据库连接。该连接字符串必须保存至 Flask 配置对象的 SQLALCHEMY_DATABASE_URI 属性中。
HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'flask_test' USERNAME = 'root' PASSWORD = 'root' DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE) app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
其中 HOSTNAME 代表数据库服务器的路由地址。
PORT 为端口号,此处未修改默认值,故使用 3306。
DATABASE 指定目标数据库的名称。
后续两个参数分别对应数据库的用户名和密码。
初始化 SQLAlchemy 实例
第三步,创建 SQLAlchemy 实例。
db = SQLAlchemy(app)
此处将创建的实例命名为 db。
定义 ORM 模型
第四步,定义 ORM 模型类。
创建模型类时,必须继承 db.Model 基类。
class Article(db.Model):
__tablename__ = "article"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(200), nullable=False)
content = db.Column(db.Text, nullable=False)代码第二行定义数据库表名为 article。第三行定义 id 字段,类型为整数,设为主键并开启自增。第四行定义 title 字段,类型为长度 200 的字符串,且设为非空。第五行定义 content 字段,类型为 db.Text,同样设为非空。
创建数据表
第五步,生成数据表。
db.create_all()
执行后,数据库中会新增一张对应的表。

此时该表结构已存在,但内容为空。

执行数据增删改查
第六步,对表中数据进行增删改查操作。
这些操作可在视图函数中执行,也可直接在脚本中运行。
@app.route("/article")
def article_view():
# 添加数据
article = Article(title="钢铁是怎样炼成的", content="xxx")
db.session.add(article)
db.session.commit()
# # 查询数据
# article = Article.query.filter_by(id=1)[0]
# print(article.title)
#
# # 修改数据
# article = Article.query.filter_by(id=1)[0]
# article.content = "yyy"
# db.session.commit()
#
# # 删除数据
# article = Article.query.filter_by(id=1)[0]
# db.session.delete(article)
# db.session.commit()
return "数据操作成功"添加数据时未指定 id,因前文已设置 id 的 autoincrement 为 True,系统会自动生成递增 ID。
执行插入操作后,数据库中可见新增记录。

其余查询、修改和删除操作的结果需自行验证。若需观察每一步的具体效果,建议在添加数据前注释掉其他三步代码,对其它步骤亦采取相同策略。
至此,关于 Python Flask-SQLAlchemy 连接数据库的流程介绍完毕。如需了解更多 Python 连接数据库相关内容,可搜索本站历史文章或继续阅读后续教程,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













