Flask-SQLALchemy基本操作

龚志
2023-12-01

Flask-SQLALchemy

Flask-SQLALchemy 是一个为了Flask增加SQLALchemy支持的扩展。它致力于简化在Flask中SQLALchemy的使用,提供了有用的默认值和额外的API来更简单地完成常见任务。

安装flask-sqlalchemy

pip install flask-sqlalchemy

数据库连接 (以sqlite数据库为例)

# 获取项目所在的绝对路径
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

 类似资料: