定義的表結構,同時也是print_order對象
print_order = Table('print_order', metadata,
Column('id', Integer, primary_key=True, autoincrement=True),
Column('order_id', String),
Column('Ten_or_Ali_order_id', String),
Column('payment_state', String),
Column('fee', String),
Column('print_num', String),
Column('consignee_name', String),
Column('consignee_phone', String),
Column('consignee_addr', String),
Column('origin_pic_name', String),
Column('final_pic_name', String),
Column('print_pic_name', String),
Column('origin_pic_name', String),
Column('spec_name', String),
Column('serial_number', String),
Column('payment_time', String)
)
然后在查詢的時用的
sqlalchemy
,那么分頁的的寫法很簡單,就是limit().offset()
# 根據手機號查
def searchPrintOrderWithPhoneNumber(self, phoneNum):
pattern = re.compile(r"0?(13|14|15|16|17|18)[0-9]{9}")
phone_str = pattern.match(phoneNum)
if phone_str:
s = select([print_order]).limit(10).offset(2)
sqlResult = self.conn.execute(s).fetchall()
print sqlResult
return phone_str.group()
else:
phone_str = '請輸入正確的號碼'
return phone_str
這是句就是查詢和分頁``` s = select([print_order]).limit(10).offset(2)
`limit(10)`限制返回10條,`offset(20)`表示偏移20個位置,從第21條開始返回。
比如手機上每頁顯示10條數據,那么這時候就是從第三頁開始顯示。`limit()`和`offset()`里頭的參數讓前端傳過來就可以了。
#####如果開發者SQL基本功較好的話,直接在代碼中寫SQL,然后利用session.execute()來執行就更直接了
根據手機號查
def searchPrintOrderWithPhoneNumber(self, phoneNum):
pattern = re.compile(r"0?(13|14|15|16|17|18)[0-9]{9}")
phone_str = pattern.match(phoneNum)
if phone_str:
sql = "SELECT * FROM print_order WHERE payment_state = 1 AND consignee_phone = " + phoneNum + " ORDER BY id DESC LIMIT 10;"
sqlResult = self.session.execute(sql)
for print_order in sqlResult:
print print_order.consignee_phone
return phone_str.group()
else:
phone_str = '請輸入正確的號碼'
return phone_str
`end`