Python cur执行重复参数
我正在用python执行SQL查询。表示重复参数的正确方法是什么? 我有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
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)
。另一种方法是清理你的argssafe\u a=MySQLdb.escape\u string(a)
,然后使用format()
,但这对我来说似乎太冗长了。好的,谢谢,但这并不能回答如何表示重复参数的问题,也就是说,不要在参数列表中给出两次“a”。如果你真的想使用format()
并且不要重复你的参数format()
可以使用一个数字来表示参数的位置:cur.execute(“从表中选择*,其中field1='{0}'和field2='{0}'”.format(MySQLdb.escape_string(a))
我也经常使用这种方法,我认为这是最简单易读的方法。