MySQL ON DUPLICATE KEY UPDATE со всеми переменными - PullRequest
0 голосов
/ 23 июня 2018

У меня ниже оператор вставки MySQL, который я хочу обновить все поля (кроме первичного ключа), если запись существует. Поскольку существует до 80 столбцов, я не хочу записывать пары ключ и значение по одному. Может ли кто-нибудь помочь в этом?

Ниже мой код:

 # Save item to database
def process_item(self, item, _):
    with self.conn.cursor() as c:
        c.execute(self.query(item), item.values())
def query(self, item):
    return "INSERT INTO income_statement ({columns}) VALUES ({values}) ON DUPLICATE KEY UPDATE ({columns}) = VALUES({columns})".format(
        columns=', '.join(item.keys()),
        values=', '.join(['%s'] * len(item))
    )

Я получил эту ошибку:

ProgrammingError: (1064, u"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 '(unit_name, fd_stock_dividend, fd_administration_fee, fd_depreciation, fd_divide' at line 1")
...