前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask 学习-12.Flask-SQLAlchemy 连接 mysql 数据库

Flask 学习-12.Flask-SQLAlchemy 连接 mysql 数据库

作者头像
上海-悠悠
发布2022-08-29 17:43:32
4.2K0
发布2022-08-29 17:43:32
举报
文章被收录于专栏:从零开始学自动化测试

前言

SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面。 Flask-SQLAlchemy 是一个为 Flask 应用插件,封装了SQLAlchemy,简化了操作,只需添加配置项就可以在Flask 项目中使用。

Flask-SQLAlchemy 环境准备

Flask 使用版本v2.2.2

先安装连接 mysql 驱动包 pymysql

代码语言:javascript
复制
pip install pymysql

安装Flask-SQLAlchemy 应用插件

代码语言:javascript
复制
pip install flask-sqlalchemy

相关版本

初始化配置

sqlalchemy 连接数据库,需要使用到一些配置信息,组合成满足以下条件的字符串:

代码语言:javascript
复制
dialect+driver://username:password@host:port/database

相关配置参数说明

配置参数

说明

dialect

数据库,如:sqlite、mysql、oracle等

driver

数据库驱动,如前面安装的:pymysql

username

登录数据库用户名

password

登录数据库密码

host

数据库部署 IP 地址

port

端口

database

数据库库名

拼接地址示例

代码语言:javascript
复制
# 拼接配置dialect + driver://username:passwor@host:port/database
DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'

flask-sqlalchemy 的相关配置封装到了 flask 的配置项中, 可以通过app.config属性 或 配置加载方案 (如config.from_object) 进行设置

配置选项

说明

SQLALCHEMY_DATABASE_URI

连接数据库。示例:mysql://username:password@host/post/db?charset=utf-8

SQLALCHEMY_BINDS

一个将会绑定多种数据库的字典。

SQLALCHEMY_ECHO

记录打印SQL语句用于调试的, 一般设置为False, 不然会在控制台输出一大堆的东西

SQLALCHEMY_POOL_SIZE

数据库池的大小,默认值为5。

SQLALCHEMY_POOL_TIMEOUT

连接超时时间

SQLALCHEMY_POOL_RECYCLE

自动回收连接的秒数。

SQLALCHEMY_MAX_OVERFLOW

控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。

SQLALCHEMY_TRACK_MODIFICATIONS

如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。

使用示例

添加配置

代码语言:javascript
复制
from flask import Flask, url_for, request, redirect, render_template

app = Flask(__name__)
# 设置数据库连接地址
DB_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/web'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
# 是否追踪数据库修改,一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

初始化对象,关联到flask 项目, 有两种方式

方法一:直接在初始化的时候传app参数

代码语言:javascript
复制
# 初始化组件对象, 直接关联Flask应用
db = SQLAlchemy(app)

方法二:使用db.init_app(app)方法

代码语言:javascript
复制
# 先实例化,后关联app
db = SQLAlchemy()
# 初始化db,关联flask 项目
db.app = app    # 这一步需先设置属性,很多老的教程都缺少这一步,导致连不上数据库
db.init_app(app)

查询示例,可以直接执行原生SQL语句,主要是检查下有没正确链接数据库,查询到结果

代码语言:javascript
复制
# 执行原生SQL语句, 测试下能不能查询到结果
sql = 'select * from parent'
result = db.session.execute(sql)
print(result.fetchall())

查询结果

代码语言:javascript
复制
[(1, 'yy', 'yoyo'), (2, 'yy', 'yoyo'), (3, 'yy', 'yoyo')...]
 * Serving Flask app 'app.py'
 * Debug mode: on

完整代码

代码语言:javascript
复制
from flask import Flask, url_for, request, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 设置数据库连接地址
DB_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/web'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
# 是否追踪数据库修改,一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

# 初始化db,关联flask 项目
db = SQLAlchemy(app)

# 执行原生SQL语句, 测试下能不能查询到结果
sql = 'select * from parent'
result = db.session.execute(sql)
print(result.fetchall())

if __name__ == '__main__':
    app.run()

2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Flask-SQLAlchemy 环境准备
  • 初始化配置
  • 使用示例
    • 报名费:报名费3000一人(周期3个月)
      • 联系微信/QQ:283340479
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档