如何在Python中连接字符串
query = "SELECT * FROM mytable WHERE time=%s", (mytime)
现在,我正在这样做,但我想把它分成两个字符串(这样我可以单独处理它们)
cursor.execute("SELECT * FROM mytable WHERE time=%s",(mytime))
然后,我想给它加一个限制 %s。我该怎么做才能不搞乱 mytime 里的 %s 呢?
补充:我想把 query2 连接上去,query2 里有 "LIMIT %s, %s"
2 个回答
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注入,你可以像Ignacio建议的那样,动态地构建你的查询。
>>> qry = 'SELECT t.mycol FROM mytable t WHERE t.mycol = %%s %s' % 'LIMIT %s,%s'
你问:
我怎么才能做到这一点,而不搞乱我时间里的
%s
呢?
注意,你需要用一个额外的 %
来转义第一个 %s
。
这样你就得到了这个字符串(当然,从DB-API的角度来看,它看起来很不错):
>>> qry
'SELECT * FROM mytable t WHERE t.mycol = %s LIMIT %s,%s'
然后把这个字符串和你的参数传递给 execute()
方法:
curs.execute(qry, (mytime,1,2,))
希望这对你有帮助。