- 查询
1.1模型类.query.fillter_by与模型类.query.fillter区别
模型类.query.fillter_by(字段名=值) 里面是布尔的条件 这个无法实现复杂查询
模型类.query.fillter(模型类.字段名==值) 里面是布尔的条件 【常用】
模型类.query.fillter(模型类.字段名.endswith('z')).all() 等价于 select * from user where 字段名 like '%z';
模型类.query.fillter(模型类.字段名.startswith('z')).all() 等价于 select * from user where 字段名 like 'z%';
模型类.query.fillter(模型类.字段名.contains('z')).all() 等价于 select * from user where 字段名 like '%z%';
模型类.query.fillter(模型类.字段名.like('%z%')).all() 等价于 select * from user where 字段名 like '%z%';
模型类.query.fillter(模型类.字段名.in_(['a','b','c'])).all() 等价于 select * from user where 字段名 in ('a','b','c');
模型类.query.fillter(模型类.字段名.between(开始,结束)).all() 等价于 select * from user where 字段名 between 开始 and 结束;
2 order by排序
模型类.query.order_by (模型类.字段名.desc()).all() 等价于 select * from user order by 字段名 desc;
模型类.query.order_by (模型类.字段名.desc()).all() 等价于 select * from user order by 字段名 desc;
模型类.query.order_by (模型类.字段名).limit(2).all() 等价于 select * from user where 字段名=值 order by 字段名 limit(2);
跳过前2位再取值前两位 就是3、4
模型类.query.order_by (模型类.字段名).offset(2).limit(2).all()
- 跟新
student = Student.query.filter(Student.id == 4).first()
student.name = "小白"
db.session.commit()
跟新多条数据
@app.route("/update2")
def update2():
"""直接根据条件更新一条或多条数据"""
Student.query.filter(Student.name == 'zhang', Student.money == -99.00).update({'money': 1998})
db.session.commit()
return "ok"
- 插入
# 插入行
admin_role = Role(name='admin')
user_role= User(username='hyp', role=admin_role)
# 对数据库的改动童年过数据库会话管理,在Flask-SQLAlchemy中,会话由 db.session 表示。在写入数据库之前,要先添加到会话中:db.session.add(admin_role)
db.session.add(user_role)# 或者db.session.add_all([admin_role, user_role])
# 为了写入数据库,要调用 commit()方法提交会话:db.session.commit()
- 删除
# 删除数据
user = User.query.get(2)
db.session.delete(user)
db.session.commit()
AutomationApiParameter.query.filter(AutomationApiParameter.automationTestCaseApi==automationTestCaseApi_obj).delete()
db.session.commit()
- 级联删除和一对一
# 优化
automationTestCaseApi_id = db.Column(db.Integer, db.ForeignKey("AutomationTestCaseApi.id"))
# 一对一,设置级联删除
automationTestCaseApi = db.relationship('AutomationTestCaseApi',
backref=db.backref('AutomationTestResult',uselist=False,cascade="all,delete", lazy='dynamic'))
uselist=False 添加就是一对一,否则一对多
automationTestCaseApi = db.relationship('AutomationTestCaseApi',
backref=db.backref('AutomationTestResult', lazy='dynamic'),cascade="all,delete",uselist=False)
#安装flask-sqlalchey flask-migrate mysql数据库 pip install flask-sqlalchemy flask-migrate #安装 flask-cors解决跨域访问 pip install flask-cors 数据库迁移 创建迁移数据库 flask db init 生成迁移脚本 flask db migrate -m "add user tables" 将迁移脚本应用到数据库中 flask db upgrade 这个执行前确保,alembic_version的标号是最新的,不是手动更新在migrations->versions目录下 将迁移脚本回滚 flask db downgrade