MySQL 语句 python 转义单引号 '
MySQL statement python escape single quote '
我有下面的 MySQL 语句 python 但是其中一个值中有一个单引号 ' 因此我得到了以下错误:
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 L at line 1
要插入的值是 Regal INT'L
如何转义或更正 MySQL 语句?
MySQL 声明
def query(self, item):
return "INSERT INTO income_statement({columns}) VALUES ({values})".format(
columns=', '.join(item.keys()),
values=self.item_to_text(item)
)
def item_to_text(self, item):
return ', '.join("'" + str(v) + "'" for v in item.values()
)
Return一个字符串模板元组和变量元组,游标可以执行(template, (v1,v2,..))
cursor.execute(‘insert into tablename (c, d) values (%s, %s)’, (v1, v2))
基于API Docs
编辑 2:更完整的示例
def query(self, item):
values = ', '.join(['%s']*len(item.keys()))
stmt = "INSERT INTO income_statement({columns}) VALUES ({values})".format(
columns=', '.join(item.keys()),
values=values
)
# self.item_to_text(item) must be a tuple
return (stmt, self.item_to_text(item))
# use it like so
cursor.execute(query(item))
编辑 3:
我很确定,如果你真的想将语句作为单个字符串传递,你必须在字符串本身中包含一个 \ ,因此使用
INT\\'L
编辑 4:
def item_to_text(self, item):
return ', '.join(item.values()) # assuming item.values() returns a list or a tuple
我有下面的 MySQL 语句 python 但是其中一个值中有一个单引号 ' 因此我得到了以下错误:
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 L at line 1
要插入的值是 Regal INT'L
如何转义或更正 MySQL 语句?
MySQL 声明
def query(self, item):
return "INSERT INTO income_statement({columns}) VALUES ({values})".format(
columns=', '.join(item.keys()),
values=self.item_to_text(item)
)
def item_to_text(self, item):
return ', '.join("'" + str(v) + "'" for v in item.values()
)
Return一个字符串模板元组和变量元组,游标可以执行(template, (v1,v2,..))
cursor.execute(‘insert into tablename (c, d) values (%s, %s)’, (v1, v2))
基于API Docs
编辑 2:更完整的示例
def query(self, item):
values = ', '.join(['%s']*len(item.keys()))
stmt = "INSERT INTO income_statement({columns}) VALUES ({values})".format(
columns=', '.join(item.keys()),
values=values
)
# self.item_to_text(item) must be a tuple
return (stmt, self.item_to_text(item))
# use it like so
cursor.execute(query(item))
编辑 3: 我很确定,如果你真的想将语句作为单个字符串传递,你必须在字符串本身中包含一个 \ ,因此使用 INT\\'L
编辑 4:
def item_to_text(self, item):
return ', '.join(item.values()) # assuming item.values() returns a list or a tuple