我在 Python 中有一个使用 MySQLdb 的 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
的参数。
关于python - 将字符串与另一个包含变量的字符串连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292335/