繁体   English   中英

将字符串与另一个包含变量的字符串连接

[英]Concatenate string with another that contains a variable

我在使用MySQLdb的Python中有一个MySQL查询,我想根据是否提供LIMIT来给我不同数量的行。

因此,类似:

sql = "SELECT URL, Name AS Category 
       FROM sitelist sl 
       INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id "
if limit > 0 :
    sql += "LIMIT %s", (limit)

但是,这失败了:

TypeError: cannot concatenate 'str' and 'tuple' objects

如何在保持查询“安全”的同时连接包含limit数的字符串? 在以上是单个字符串的情况下,以上内容可以正常工作。

在PHP中,我将只使用带有bindparam()的准备好的PDO语句,但是在Python中找不到任何类似的东西。

我认为最简单的方法是:

sql = ("SELECT URL, Name AS Category "
       "FROM sitelist sl "
       "INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id")

if limit > 0:
    whatever.execute(sql+" LIMIT %s", (limit,))
else:
    whatever.execute(sql)

请注意: sql在每行上都应有开和引号; 并且limit需要在一个元组中作为execute的参数。

使用string格式。

sql = "SELECT URL, Name AS Category\n\
   FROM sitelist sl\n\
   INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id "
if limit > 0: # you don't need parenthesis in python
    sql += "LIMIT {}" .format(limit)

或使用format specifier

sql = "SELECT URL, Name AS Category\n\
       FROM sitelist sl\n\
       INNER JOIN sitecategory sc ON sc.PlacementCategory_id = sl.Category_id "
if(limit > 0):
    sql += "LIMIT %d" %limit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM