max.bai
2020-03
目錄
python - peewee 各種用法
0x00 背景
0x01 表結構
0x02 peewee子查詢操作
0x03 modles混合sql **
0x04 peewee case用法
0x05 peewee or 用法
記錄peewee 使用中需要的一些用法,包括子查詢,混合sql指令碼,case用法, or用法
表結構 user
id int 工號
name varchar 名稱
mysql指令碼:
select
t1.id,
t1.name
from (
select u.id, u.name
from user
where u.id > 1000
) as t1
where t1.id < 2000
首先你已經有了modle檔案
# 子查詢 id > 1000
subquery = user.select(user.id, user.name).where(user.id>1000)
# 外面查詢
query = user.select(subquery.c.id, subquery.c.name).from_(subquery).where(subquery.c.id<2000).order_by(subquery.c.id)
當peewee支援不了的時候,可能需要寫mysql指令碼, 就需要用到sql類
比如sql("'string' as wk_days")
等同sql指令碼
'string' as wk_days
完成例子:
from peewee import join, sql, case, fn
user.select(user.id, user.name, sql("'string' as wk_days"))
等同sql指令碼:
select id, name, 'string' as wk_days from user
mysql指令碼:
select id, name, case when id > 1000 then 'old' else 'new' end as `tag` from user
peewee:
from peewee import join, sql, case, fn
tag = case(none, (
(user.id > 1000, 'old'),
), 'new')
query = user.select(user.id, user.name, tag.alias('tag')
or 用法採坑
官網用法
or 可以用 |
比如:where id > 500 or id < 100
peewee:
(user.id >500) | (user.id < 100)
切記加括號
官網介紹
query1 = user.select(user.name).where(user.id>100)
query2 = author.select(author.name).where(author.id>100)
union = query1 | query2
# 或者
union = query1.union_all(query2)
query = union.select_from(union.c.name)
用遞迴刪除各種節點
include include include define maxsize 1000typedef intelemtype typedef struct node node typedef node linkednode 1 求以h為頭指標的單鏈表的節點個數 int getnodenum link...
各種符號用英文怎麼讀
我們每天都看見或敲擊這些符號,但不見得當老外或老師用英語說出這些符號時我們能立即反應過來,這正是促成此文的原因。1.波浪號tilde,源於西班牙語和葡語中的發音符號。2.感嘆號exclamation mark exclamation point bang,無需多解釋,在這個 咆哮體 盛行的時代,想不...
用Python實現各種排序演算法
比較相鄰的元素大小,將小的前移,大的後移,就像水中的氣泡一樣,最小的元素經過幾次移動,會最終浮到水面上。def bubble list for i in range len list for j in range 0,len list 1 i if list j list j 1 list j li...