Python cur执行重复参数

Python cur执行重复参数,python,sql,mysql-python,Python,Sql,Mysql Python,我正在用python执行SQL查询。表示重复参数的正确方法是什么? 我有 cur.execute("""select * from TableA where field1= '{}' and field2 = '{}'""".format(a,a)) 这里的“a”和“a”是相同的。我是否需要在参数列表中重复它,或者是否有某种方法只给出一次。在括号内放一个数字,以表示位置参数 safe_a = MySQLdb.escape_string(a) # protect against sql-inje

我正在用python执行SQL查询。表示重复参数的正确方法是什么? 我有

cur.execute("""select * from TableA where field1= '{}' and field2 = '{}'""".format(a,a))

这里的“a”和“a”是相同的。我是否需要在参数列表中重复它,或者是否有某种方法只给出一次。

在括号内放一个数字,以表示位置参数

safe_a = MySQLdb.escape_string(a) # protect against sql-injection!!!
cur.execute("select * from TableA where field1 = '{0}' and field2 = '{0}'".format(safe_a))

您使用哪个库来执行此操作?MySQLdb?是的,我正在为此使用MySQLdb。不要使用字符串插值(
.format()
),因为有SQL注入的风险。相反,执行
cur.execute(“从表a中选择*,其中字段1='%s',字段2='%s',a,a)
。另一种方法是清理你的args
safe\u a=MySQLdb.escape\u string(a)
,然后使用
format()
,但这对我来说似乎太冗长了。好的,谢谢,但这并不能回答如何表示重复参数的问题,也就是说,不要在参数列表中给出两次“a”。如果你真的想使用
format()
并且不要重复你的参数
format()
可以使用一个数字来表示参数的位置:
cur.execute(“从表中选择*,其中field1='{0}'和field2='{0}'”.format(MySQLdb.escape_string(a))
我也经常使用这种方法,我认为这是最简单易读的方法。