2010-03-31 46 views
1
query = "SELECT * FROM mytable WHERE time=%s", (mytime) 

目前,我「米這樣做,但我想把它分成2個字符串(這樣我就可以單獨做這些)如何在Python Concat的字符串

cursor.execute("SELECT * FROM mytable WHERE time=%s",(mytime)) 

然後,我想。增加一個限制%s到它,我怎麼能做到這一點沒有指明MyTime對應搞亂%S

編輯:我想Concat的QUERY2,其中有 「LIMIT%S,%S」

+0

你也可以發佈你用來執行查詢的代碼嗎? – 2010-03-31 00:50:04

+9

我喜歡SQL注入。 – 2010-03-31 01:35:20

+0

SQL注入在哪裏? – Gabe 2010-03-31 03:32:52

回答

1
cxn.execute("SELECT * FROM mytable WHERE time=%%s LIMIT %d" % (mylimit,), mytime) 

或者:

cxn.execute("SELECT * FROM mytable WHERE time=%s" + (" LIMIT %d" % (mylimit,)), mytime) 
3

正在警惕SQL注入,您可以動態地撰寫您的查詢as Ignacio suggests

>>> qry = 'SELECT t.mycol FROM mytable t WHERE t.mycol = %%s %s' % 'LIMIT %s,%s' 

你問:

我怎麼能做到這一點沒有指明MyTime對應搞亂 %s的?

請注意,您可以通過額外的%逃脫第一個%s
這就給了你這個字符串(這當然看起來很可愛至於DB-API關注):

>>> qry 
'SELECT * FROM mytable t WHERE t.mycol = %s LIMIT %s,%s' 

然後通過這個字符串參數到​​方法:

curs.execute(qry, (mytime,1,2,)) 

HTH