mysql语句python escape单引号'

pexxcrt2  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(350)

我用python编写了下面的mysql语句,但其中一个值中有一个单引号,因此我得到以下错误:

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 inter'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()
        )
a8jjtwal

a8jjtwal1#

返回字符串模板的元组和变量的元组,游标可以执行(template,(v1,v2,…)

cursor.execute(‘insert into tablename (c, d) values (%s, %s)’, (v1, v2))

基于api文档
编辑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:我很确定,如果你真的想把这个语句作为一个字符串来传递,你必须在字符串中有一个\ present,因此使用int\'l
编辑4:

def item_to_text(self, item):
    return ', '.join(item.values()) # assuming item.values() returns a list or a tuple

相关问题