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中类型(说明) |
---|---|
Integer | int(普通整数,一般是32位) |
SmallInteger | int(取值范围小的整数,一般为16位) |
BigInteger | int或long(不限制精度的整数) |
Float | float(浮点数) |
Numeric | decima.Decimal(普通整数,一般是32位) |
String | str(变长字符串) |
Text | str(变长字符串,对较长或不限长度的字符串做了优化) |
Unicode | unicode(变长Unicode字符串) |
Unicode Text | unicode(变长Unicode字符串,对较长或不限长度的字符串做了优化) |
Boolean | bool(布尔值) |
Date | datetime.data(时间) |
Time | datetime.datetime(日期和时间) |
LargeBinary | str(二进制文件) |
数据库基本操作
一、增删改操作
- 在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中使用数据库的主要内容,如果未能解决你的问题,请参考以下文章