python add string返回奇怪的字符

时间:2014-08-09 07:39:07

标签: python string

这是我的源代码的一部分,返回不正确

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, "

我该如何解决这个问题?

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:
    # ...