使用MySQL INSERT INTO时插入Ordered Dict值

时间:2016-08-01 14:21:59

标签: python mysql mysql-python mysql-error-1064

当我尝试将某些值插入表格时遇到此错误。 这是我的代码:

def tsx_insert(self, d_list):

for item in d_list:

    query = """ INSERT IGNORE INTO tsx_first_insert(protocollo,procedura,oggetto,priorita,
                                                    tipo_richiesta,sottotipo_richiesta,emergenza,
                                                    richiesta,uo_richiedente,autore,scadenza_sla)
                VALUES(%(protocollo)s,%(procedura)s,%(oggetto)s,%(priorita)s,%(tipo_richiesta)s,
                       %(sottotipo_richiesta)s,%(emergenza)s,%(richiesta)s,%(uo_richiedente)s,
                       %(autore)s,%(scadenza_sla)s)"""

    values = item.values()

    self.exec_query(query,values)

这里'exec_query'功能:

def exec_query(self, query, params):
    try:
        if self.connected is None:
            self.connect()

        self.cursor = self.connected.cursor()
        self.cursor.connection.autocommit(True)
        self.cursor.execute(query)

        if self.cursor.description:
            self.description = [d[0] for d in self.cursor.description]

        self.rows = self.cursor.rowcount
        self.sql_result = self.cursor.fetchall()
    except MySQLdb.Error, e:
        logging.error('Error {0}: {1}'.format(e.args[0], e.args[1]))
    finally:
        self.cursor.close()

错误是:“错误1064:您的SQL语法中有错误;请查看与您的MariaDB服务器版本对应的手册,以便在'%(protocollo)s,%(procedura)s附近使用正确的语法, %(oggetto)S,%(priorita)S,%(tipo_richiesta)类,       '在第4行“

我无法弄清楚问题是什么。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您忘记在params方法调用中提及self.cursor.execute()字典,因此参数字符串保留在原位而不是替换。

尝试

   self.cursor.execute(query, params)