Python - 使用%d的MySQLi参数化查询

时间:2018-03-01 22:43:58

标签: mysql python-2.7

这可能是一个已经回答的问题,但我没有找到与之相关的任何内容。

我想我可能有一个独特的场景,我需要在LIMIT子句的查询中添加一个参数。 Stack Overflow考虑:

query = "SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %s;"
x.execute(query,(str(id_variable),str(limit_variable))

现在又回来了:

  

您的SQL语法有错误;检查手册   对应于您的MariaDB服务器版本,以获得正确的语法   在第1行''5'附近

我应该使用%d还是不鼓励这种特殊用途?

注意:我绘制的这个限制变量的字段是tinyint,因此我没有看到SQL注入攻击,但我仍然希望使用参数化查询。

使用%d停止执行并绕过catch块:

try:
  query = """SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %d;"""
  x.execute(query,(str(id),int(l)))
except Exception as ex:
  #some code

使用的库是MySQLi 变量'x'是光标 变量'id_variable'是一个id为

的int

1 个答案:

答案 0 :(得分:0)

使用以下方法解决问题:

try:
  query = """SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %s;"""
  x.execute(query,(str(id),int(l)))
except Exception as ex:
  #some code

所以我声明我将使用字符串(%s)但将该参数强制转换为int()。