假設 tbuser 為乙個表模型,session 為與資料庫的會話
乙個普通的查詢大概是這個樣:
session.query(tbuser)
.filter
(tbuser.name==
"xiaokeai"
)
這是為已知要查 tbuser 內的 name 欄位而設計的查詢,有這麼乙個需求,查某乙個字段裡面包含有字母 y 的條目,出現了對未知欄位的描述。
__dict__魔術方法:返回類的屬性與屬性值 item,型別為字典。在 sqlalchemy 的模型中每乙個正常的字段屬性對應值均為字段物件,等待在被 query 查詢時例項化。
# 乙個模型的 __dict__ 參考
)
利用 __dict__來實現不特定字段
col_name =
"***"
# 查詢某個字段包含有 xx 的 , 這個字段可能是任何乙個字段
session.query(tbuser)
.filter
(tbuser.__dict__[col_name]
.like(
"%y%"))
# 亦或者查詢某個字段值等於 xx
session.query(tbuser)
.filter
(tbuser.__dict__[col_name]
=="xx"
)
session.query(tbuser).filter()
這是一條普通的過濾查詢,實際上在 filter 內的所有條件都是乙個物件,用乙個 list 裝所有的查詢條件物件。
filters =
[ tbuser.name.like(
"y")
,# 加乙個包含y條件
tbuser.xx==
"test"
# 加乙個值等於test的條件
]# 可以直接對過濾條件解包
session.query(tbuser)
.filter
(*filters)
and_, or_ 的增加示例
# 查詢同時滿足有filters內條件的
session.query(tblsymp)
.filter
(and_(
*filters),)
# 查詢同時滿足filters條件的 或者滿足 filters2 條件的
session.query(tbuser)
.filter
(or_(and_(
*filters)
,*filters2)
)
我是庸了個白,你的點讚將是我更新的最大動力。 tornado框架SQLAlchemy的操作
在用到python的一些框架裡,需要進行前後端資料互動,其中資料庫的連線是必不可少的,之前自己使用sqlalchemy在進行資料庫連線時遇到了很多問題,以及一些流程不是很清楚。所以花了點時間進行了一下流程梳理。1.首先建立乙個空py檔案 這裡命名為connect.py 匯入包 from sqlalc...
sqlalchemy的初步認識
sqlalchemy是python的乙個包,用來運算元據庫.其實sqlalchemy自己並不能連線資料庫,它也是通過pymysql或者其他資料庫連線工具連線的.alchemy,煉丹術,煉金術,魔法 通過sqlalchemy可以使不同的 通過不同的工具連線不同的資料庫.就像是煉丹爐一樣,一切操作都在這...
Sqlalchemy中的事務
from flask import flask from flask sqlalchemy import sqlalchemy class user db.model id db.column db.integer,primary key true name db.column db.string ...