这是我的源代码的一部分,返回不正确
query = ""
for i in range(len(values)):
if type(values.values()[i]) is str:
query += "'" + str(values.values()[i]) + "', "
else:
query += str(values.values()[i]) + ", "
当我使用
时values = {'Date': '2014-08-09 07:12:40', 'Ip': '127.0.0.1', 'MembershipID': 1}
查询是
"\\\'2014-08-09 07:12:40\\\', \\\'127.0.0.1\\\', 1, "
而不是
"'2014-08-09 07:12:40', '127.0.0.1', 1, "
我该如何解决这个问题?
答案 0 :(得分:3)
不尝试自己引用SQL参数。相反,将其留给数据库适配器;它可以更有效地执行它,始终正确并有助于提高数据库查询解析效率。
对于MySQL,您可以使用%(name)s
形式的命名参数,并将字典作为cursor.execute()
的第二个参数传递:
query = '''\
SELECT * FROM foo
WHERE
date < %(Date)s AND
ip_address = %(Ip)s AND
membership = %(MembershipId)s
'''
cursor.execute(query, values)
for row in cursor:
# ...