在MySql db中插入双引号

时间:2013-05-04 03:08:06

标签: python mysql python-2.7

我需要在MySql db中插入一个包含双引号的值:

import MySQLdb
cursor = db.cursor()
sql_pattern = 'INSERT INTO Table(column1, column2, column3....) VALUES("{0}".....)'
data_object_array = get_data_object_array()
for item in data_object_array():
  sql = sql_pattern.format(item["attr1"], item["attr2"]....)
  cursor.execute(sql)

我有错误

_mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'data" fdsfds5454 "data2"")\' at line 1')

其中"data" fdsfds5454 "data2"是包含item["attr1"]

的数据

如何摆脱它?

1 个答案:

答案 0 :(得分:4)

请勿,不要,使用.format进行SQL查询。使用内置的DB转义机制:

sql_pattern = 'INSERT INTO Table(column1, column2, column3...) VALUES(%s, %s.....)'

...
  cursor.execute(sql_pattern, (item["attr1"], item["attr2"]...,))

.exectue将使用正确的(安全!)字符串表示值替换每个%s,无论是字符串,整数,浮点数等。%ssql_patter周围没有其他引号1}},因为.execute将根据参数类型添加它们。