小知識

1. 讓指定字段按照給定的值進行排序

```?

temp_query= db.session.query(TemplateBuild).filter(

? ? TemplateBuild.deploy_id== deploy_id,

? ? TemplateBuild.env.in_(envs),

? ? TemplateBuild.delete== 0

).order_by(case(value=TemplateBuild.env, whens={'prod': 1, 'staging': 2, 'test': 3, 'dev': 4}))

# 多不同字段排序

# order_by(case(

#? ? (

#? ? ? ? (TemplateDeploy.name == 'prod', 1),

#? ? ? ? (TemplateDeploy.env == 'staging', 2),

#? ? ? ? (TemplateDeploy.compiled == 'Server', 3)

#? ? ))

# )

```


原文鏈接:https://blog.csdn.net/u010311062/article/details/76268783

最近項目中用了Sqlalchemy orm岖圈,開始數(shù)據(jù)不多的時候用coun()函數(shù)不會慢,但是當數(shù)據(jù)到百萬級的時候宫纬,filter_obj.count()來獲取數(shù)據(jù)總數(shù)此叠,就明顯感覺慢了隙弛。

看官方API的描述:

count ( )

Return a count of rows this Query would return.

This generates the SQL for this Query as follows:

SELECT count(1) AS count_1 FROM (

? ? SELECT <rest of query follows...>

) AS anon_1

這里會臨時建一個表把數(shù)據(jù)查詢出來然后在count

我在數(shù)據(jù)庫中對這種count的計時比較:

那么我們?nèi)绾谓鉀Q這個問題呢尚卫。

我們可以利用func.count來處理統(tǒng)計總數(shù)的

這里要用到Sqlalchemy的函數(shù)with_entities來重置查詢

意思就是我們可以這樣做

filter_obj = session.quert(User).filter(User.id>23)

data = filter_obj[0:10]

total = filter_obj.with_entities(func.count(User.id)).scalar()

然而還有一個問題。我這里已經(jīng)將查詢封裝在框架里面了法挨。我并不能保證每個model的主鍵都是id

所以,這里要獲取到傳進來的model的主鍵

from sqlalchemy import inspect

ins = inspect(self.model)

pk = ins.primary_key[0] ? ? ??

primary_key返回的是一個元組拉岁,我們這里支取第一個坷剧,此時pk返回的是Column類型惰爬,('Tuple of primary keys: ', (Column('id', Integer(), table=<cmdb_port_scan>, primary_key=True, nullable=False),))

這里我們將查詢改為filter_obj.with_entities(func.count(pk)).scalar()即可

————————————————

版權聲明:本文為CSDN博主「moses濤」的原創(chuàng)文章喊暖,遵循CC 4.0 BY-SA版權協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明撕瞧。

原文鏈接:https://blog.csdn.net/u010311062/article/details/76268783

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陵叽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丛版,更是在濱河造成了極大的恐慌巩掺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件页畦,死亡現(xiàn)場離奇詭異胖替,居然都是意外死亡,警方通過查閱死者的電腦和手機豫缨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門独令,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人好芭,你說我怎么就攤上這事燃箭。” “怎么了舍败?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵招狸,是天一觀的道長敬拓。 經(jīng)常有香客問我,道長裙戏,這世上最難降的妖魔是什么乘凸? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮累榜,結果婚禮上翰意,老公的妹妹穿的比我還像新娘。我一直安慰自己信柿,他們只是感情好冀偶,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渔嚷,像睡著了一般进鸠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上形病,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天客年,我揣著相機與錄音,去河邊找鬼漠吻。 笑死量瓜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的途乃。 我是一名探鬼主播绍傲,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耍共!你這毒婦竟也來了烫饼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤试读,失蹤者是張志新(化名)和其女友劉穎杠纵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钩骇,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡比藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倘屹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片银亲。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唐瀑,靈堂內(nèi)的尸體忽然破棺而出群凶,到底是詐尸還是另有隱情,我是刑警寧澤哄辣,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布请梢,位于F島的核電站赠尾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毅弧。R本人自食惡果不足惜气嫁,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望够坐。 院中可真熱鬧寸宵,春花似錦、人聲如沸元咙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庶香。三九已至甲棍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赶掖,已是汗流浹背感猛。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奢赂,地道東北人陪白。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像膳灶,于是被迫代替她去往敵國和親咱士。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354