Flask中使用数据库

Posted 想成为大师啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask中使用数据库相关的知识,希望对你有一定的参考价值。

Flask-SQLAlchemy 扩展

  • SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升
  • SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM和底层的原生数据库的操作。flask-sqlalchemy是一个简化了 SQLAlchemy 操作的flask扩展

安装 flask-sqlclchemy

pip install flask-sqlalchemy

如果连接的是 mysql 数据库,需要安装 mysqldb

pip install flask-mysqldb

使用Flask-SQLAlchemy管理数据库

在 Flask-SQLAlchemy中,数据库使用 URL 指定,而且程序使用的数据库必须保存到 Flask 配置对象的 SQLALCHEMY_DATABASE_URL 键中。

Flask的数据库设置:

app.config['SQLALCHEMY_DATABASE_URI'] = 
'mysql://root:mysql@127.0.0.1:3306/test'

其他设置:

# 动态追踪修改设置,如未设置只会提示警告,不建议开启
app.config['SQLALCHEMY_TRACK_MODIFICATTONS'] = False
# 查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO'] = True
名字备注
SQLALCHEMY_DATABASE_URL用于连接的数据库 URL。例如:sqlite:tmp/test.dbmysql://username:password@server/db
SQLALCHEMY_BINDS一个映射 binds 到连接 URI 的字典
SQLALCHEMY_ECHO如果设置为True,SQLAlchemy会记录所有发给stderr的语句,这对调试有用。
SQLALCHEMY_RECORD_QUERIES可以用于显示地禁用或启用查询记录。查询记录在调试或测试模式自动启用。更多信息见 get_debug_queries()
SQLALCHEMY_NATIVE_UNICODE可以用于显示禁用原生 unicode 支持。当使用不合适的指定无编码的数据库默认值时,这对于一些数据库适配器是必须的(比如 Ubuntu上某些版本的PostgreSQL)
SQLALCHEMY_POOL_SIZE数据库连接池的大小。默认是引擎默认值(通常是5)
SQLALCHEMY_POOL_TIMEOUT设定连接池的连接超时时间。默认是10.
SQLALCHEMY_POOL_RECYCLE多少秒后自动回收连接。这对MySQL是必要的,它默认移除闲置多于8小时的连接。注意如果使用了 MySQL,Flask-SQLALchemy自动设定 这个值为2小时

常用的SQLAlchemy字段类型

类型名python中类型(说明)
Integerint(普通整数,一般是32位)
SmallIntegerint(取值范围小的整数,一般为16位)
BigIntegerint或long(不限制精度的整数)
Floatfloat(浮点数)
Numericdecima.Decimal(普通整数,一般是32位)
Stringstr(变长字符串)
Textstr(变长字符串,对较长或不限长度的字符串做了优化)
Unicodeunicode(变长Unicode字符串)
Unicode Textunicode(变长Unicode字符串,对较长或不限长度的字符串做了优化)
Booleanbool(布尔值)
Datedatetime.data(时间)
Timedatetime.datetime(日期和时间)
LargeBinarystr(二进制文件)

数据库基本操作

一、增删改操作

  • 在Flask-SQLAlchemy中,插入、修改、删除数据库,均由数据库会话管理。
    • 会话用 db.session表示。在准备把数据库写入数据库前,要先将数据库添加到会话中然后调用 commit()方法提交会话
  • 在Flask-SQLAlchemy中,查询操作是通过 query对象操作数据
    • 最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询
db.session.add(role)	添加到数据库的session中

db.session.add_all([user1, user2])	添加多个信息到session中

db.session.commit()	提交数据库的修改(包括增//)

db.session.rollback()	数据库的回滚操作

db.session.delete(user)	删除数据库(需跟上commit)

以上是关于Flask中使用数据库的主要内容,如果未能解决你的问题,请参考以下文章

Flask 编写http接口api及接口自动化测试

Flask之模板之宏继承包含

Flask模板宏的概念和基本使用

python flask(多对多表查询)

flask中jinjia2模板引擎使用详解5

python后端 flask框架 计算时间差 并根据时间差条件返回flag值