学习笔记:flask_sqllalchemy中 orm 相关查询操作
优缺点:
优点:
只需要面向对象编程,不需要使用sql语言
实现数据模型和数据库的解藕,及不用关心是什么数据库,更改简单配置即可更换数据库。
缺点
有部分性能损耗
基本操作
插入
1 # 创建模型类对象 2 ro1 = Role(name='admin') 3 # 执行add添加命令 4 db.session.add(ro1) 5 # 如果是多条数据(多个用于提交的模型类对象)可使用add_all提交列表数据 6 # db.session.add_all([us1,us2,us3,us4,us5,us6,us7,us8,us9,us10]) 7 # 提交到数据库(未提交数据库不发生改变) 8 db.session.commit() 9 ———————————————— 10 版权声明:本文为CSDN博主「jlb1024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 11 原文链接:https://blog.csdn.net/jlb1024/article/details/81515155
查询
- filter_by精确查询
-
1 # 查询name是wang的所有对象 2 User.query.filter_by(name='wang').all()
- frist返回第一个对象
-
1 # 查询name是wang的第一个对象 2 User.query.filter_by(name='wang').first()
- all返回查询到所有对象(返回一个查询集合)
-
1 # 查询name是wang的所有对象 2 User.query.filter_by(name='wang').all()
filter模糊查询
1 # 查询name结尾是‘g’的所有数据 2 User.query.filter(User.name.endswith('g')).all()
- get查询主键
-
1 # 查询主键ID为 1 的对象 2 User.query.get(1)
- 逻辑非查询
-
1 # 返回name不是‘wang’的所有用户 2 User.query.filter(User.name!='wang').all()
- 逻辑与,需要导入and
-
1 # 查询所有name是wang的并且emali以‘163.com’结尾的用户 2 from sqlalchemy import and_ 3 User.query.filter(and_(User.name!='wang',User.email.endswith('163.com'))).all()
- 逻辑或,需要导入or_
-
1 # 查询所有name是wang或者emali以‘163.com’结尾的用户 2 from sqlalchemy import or_ 3 User.query.filter(or_(User.name!='wang',User.email.endswith('163.com'))).all()
- not_取反操作
-
1 # name是chen的都不要,及取name是‘chen’的反 2 from sqlalchemy import not_ 3 User.query.filter(not_(User.name=='chen')).all()
-
一般查询操作总汇(包括其他部分查询)
-
1 """ 2 查询所有用户数据 3 User.query.all() 4 查询有多少个用户 5 User.query.count() 6 查询第1个用户 7 User.query.first() 8 查询id为4的用户[3种方式] 9 User.query.get(4) 10 User.query.filter(User.id == 4).first() 11 User.query.filter_by(id=4).first() 12 查询名字结尾字符为g的所有数据[开始/包含] 13 User.query.filter(User.name.endswith('g')).all() 14 User.query.filter(User.name.startswith('g')).all() 15 User.query.filter(User.name.contains('g')).all() 16 查询名字不等于wang的所有数据[2种方式] 17 User.query.filter(not_(Usme == 'wang')).all() 18 User.query.filter(User.name != 'er.nawang').all() 19 查询名字和邮箱都以 li 开头的所有数据[2种方式] 20 User.query.filter(and_(User.name.startswith("li"), User.email.startswith("li"))).all() 21 User.query.filter(User.name.startswith("li"), User.email.startswith("li")).all() 22 查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据 23 [User: 1 wang, User: 5 tang, User: 8 liu] 24 查询id为 [1, 3, 5, 7, 9] 的用户列表 25 User.query.filter(User.id.in_([1,3,5,7,9])).all() 26 查询name为liu的角色数据 27 user = User.query.filter(User.name == "liu").first() 28 Role.query.get(user.role_id) 29 查询所有用户数据,并以邮箱排序 30 User.query.order_by(User.email).all() 31 User.query.order_by(User.email.desc()).all() 倒序 32 每页3个,查询第2页的数据 33 User.query.paginate(2, 3, False).items 34 """
————————————————
原文链接:https://blog.csdn.net/jlb1024/article/details/81515155

浙公网安备 33010602011771号