如何在Python中连接字符串

1 投票
2 回答
2165 浏览
提问于 2025-04-15 21:03
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,))

希望这对你有帮助。

撰写回答