Flask-SQLALchemy 是一个为了Flask增加SQLALchemy支持的扩展。它致力于简化在Flask中SQLALchemy的使用,提供了有用的默认值和额外的API来更简单地完成常见任务。
pip install flask-sqlalchemy
# 获取项目所在的绝对路径
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
# 配置数据库 (sqlite数据库)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(BASE_DIR,'db.sqlite')
# MySQL数据库连接 (MySQL连接需要安装pymysql依赖)
# app.config["SQLALCHEMY_DATABASE_URI"]="maysql+pymysql://username:password@localhost/(数据库名字)"
# 配置动态追踪修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 创建SQLALchemy核心对象
db = SQLAlchemy(app)
字段类型:
属性 | 描述 |
---|---|
String | 字符串 |
Text | 长文本 |
Integer | 整型 |
Float | 浮点型 |
Date | 时间类型年月日 |
DateTime | 时间类型年月日时分秒 |
字段属性:
属性 | 描述 |
---|---|
primary_key | 主键 |
unique | 键值唯一性 |
unllable | 索引 |
default | 默认值 |
增加一条:
table1 = Table(name='zx',age=13)
session = db.session
session.add(table1)
session.commit()
增加多条:
s1 = Table(name='ls',age=14)
s2 = Table(name='ww',age=16)
s3 = Table(name='zl',age=12)
session = db.session
session.add_all([s1,s2,s3,])
session.commit()
查询所有
table = Table.query.all()
print(table) # [<Table 1>, <Table 2>, <Table 3>, <Table 4>]
查询一条 (id = 1)
table = Table.query.get(1)
print(table) # [<Table 1>]
查询多条(年龄=16)
table = Table.query.filter_by(age=16).all()
print(table) # [<Table 3>, <Table 6>, <Table 9>]
查询多条 (年龄<=14)
table = Table.query.filter(Table.age <= 14).all()
print(table) # [<Table 1>, <Table 2>, <Table 4>, <Table 5>, <Table 7>, <Table 8>, <Table 10>]
模糊查询 (名字带‘李’)
table = Table.query.filter(Table.age < 16 ,Table.name.like("%李%")).all()
print(table) # [<Table 5>, <Table 8>]
查询方法列表:
方法 | 描述 |
---|---|
all | 查询所有,返回列表,没有则空列表 |
get(id) | id查询,返回一个对象,没有返回None |
filter | 过滤筛选,不支持组合查询 |
filter_by | 过滤筛选,支持组合查询 |
like | 模糊查询 (%匹配0或多个,_ 匹配一个) |
limit | 返回数据条数 |
offset | 查询起始位置,以下标进行偏移 |
order_by | 排序 |
sun | 聚合查询,取值的总和 |
avg | 聚合查询,取值的平均值 |
max | 聚合查询,取值的最大值 |
min | 聚合查询,取值的最小值 |
count | 聚合查询,指定字段记录条数 |
group_by | 分组查询 |
and_ | 逻辑查询,与 |
or_ | 逻辑查询,或 |
not_ | 逻辑查询 ,非 |
更新id=1 的name = 小李
table = Table.query.get(1)
table.name = '小李'
print(table.name) # 小李
db.session.commit()
删除id = 2的用户
table = Table.query.get(2)
session = db.session
session.delete(table)
session.commit()
t = Table.query.get(2)
print(t) # None
源码:https://github.com/BanditKin/flask-sqlalchemy