flask-sqlalchemy 增删改查

  1. 查询

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() 

  1. 跟新

 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"

  1. 插入

# 插入行

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()

  1. 删除

     # 删除数据

    user = User.query.get(2)

    db.session.delete(user)

db.session.commit()

AutomationApiParameter.query.filter(AutomationApiParameter.automationTestCaseApi==automationTestCaseApi_obj).delete()

db.session.commit()

  1. 级联删除和一对一

# 优化
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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值