flask 数据库
安装插件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask-wtf pymysql // 数据库 驱动 flask-sqlalchemy // shujuku flask-migrate // prm flask-mail // 邮箱 flask-wtf // 表达验证
数据库连接
在__init__ 文件下
db_uri = 'sqlite:///sqlite3.db' SQLALCHEMY_DATABASE_URI = db_uri SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ECHO = True
models 代码
# 数据库
from .exts import db
# 创建用户表
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(200), unique=True, nullable=False)
password = db.Column(db.String(256), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
sex = db.Column(db.Boolean, nullable=False)
注释 :
db.column :表示字段
db.Integer:表示整数
primary_key=True :主键
autoincrement=True:自动递增
db.string(30):varchar(30)可变字符串
unique=True :唯一约束
index=True :普通索引
default=1: 默认值
nullable=False :是否允许为
数据迁移
flask db init 创建迁移文件夹migrates,只调用一次 flask db migrate 生成迁移文件 flask db upgrade 执行迁移文件中的升级 flask db downgrade 执行迁移文件中的降级
添加多条数据
# 同时添加多条数据 users =[]
// 将数据 添加到列表 for i in range(10,30): u = User() u.name ='冰冰'+str(i) u.age = i users.append(u)
// 提交数据 db.session.add_all(users) db.session.commit()
添加一条数据
@pb.route('/useradd/')
def user_add():
u = UserModel()
u.username = 'kun'
u.password = 123
try:
db.session.add(u)
db.session.commit()
except Exception as e:
db.session.rollback()
return '成功'
数据库查询操作过滤器
filter(user.age == 20)
把过滤器添加到原查询上,返回一个新查询
filter_by(age>20)
把等值过滤器添加到原查询上,返回一个新查询 列表
limit()
使用指定的值限制原查询返回的结果数量,返回一个新查询
offset()
偏移原查询返回的结果,返回一个新查询
order_by( desc('age')) 降序
根据指定条件对原查询结果进行排序,返回一 个新查询
group_by()
根据指定条件对原查询结果进行分组,返回一个新查询
常用查询
all() 以列表形式返回查询的所有结果,返回列表 first()返回查询的第一个结果,如果没有结果,则返回 None first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回 404 错误响应 get() 返回指定主键对应的行,如果没有对应的行,则返回 None get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回 404 错误响应 count() 返回查询结果的数量 paginate() 返回一个 Paginate 对象,它包含指定范围内的结果
属性查询
查询属性
contains ('王') 模糊查询 找名字带王
startswith () 什么开始
endswith() 什么结束
in_([10, 20]) 包含 (10, 20)
__gt__
__ge__
__lt__
__le__
逻辑运算
# 逻辑运算: and_, or_, not users =User.query.filter(User.age>20,User.age<25) # 且 users =User.query.filter(and(user.age>20,user.age<25)) # 且 users =User.query.filter(or_(User.age>25,User.age<20))#或
users =User.query.filter(not_(or_(user.age>25,User.age<20)))#非

浙公网安备 33010602011771号