學習筆記:flask_sqllalchemy中 orm 相關查詢操作
阿新 • • 發佈:2022-03-13
優缺點:
優點:
只需要面向物件程式設計,不需要使用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='
- 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!='
- 邏輯與,需要匯入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