Не удается вставить данные в базу данных с помощью pymysql, что не так с моим синтаксисом? - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь вставить некоторые данные в таблицу в MySQL.Но что-то не так с моим синтаксисом sql, и я просто не смог его найти, тоже ничего не могу найти в сети.

Попытался использовать необработанную строку для вставки, получил то же сообщение об ошибке.


def save_room_info(data):
    conn = pymysql.connect(...)//this goes right
    try:
        with conn.cursor() as cursor:
            table = 'room'
            keys = ', '.join(data.keys())
            values = ', '.join(['%s'] * len(data))
            sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
            try:
                if cursor.execute(sql, tuple(data.values())):
                    print('Successful')
                    conn.commit()
            except Exception:
                print('Failed', sys.exc_info())
                conn.rollback()
    finally:
        conn.close()


def main():
    data = {
        'title': 'a',
        'screenshot': 'a',
        'type': 0,
        'viewCount': 0,
        'nickname': 'Allen',
        'level': 20,
        'headUrl': 'a',
        'tag': 'a',
        'rank': 3,
        'followerCount': 290
    }
    save_room_info(data)

В таблице 'room' есть поле 'id', для которого я установил значение Автоинкремент.И «id» является единственным первичным ключом.Но даже если я добавил идентификатор во время вставки данных, он все равно выдал то же сообщение об ошибке.

Получил это сообщение об ошибке:

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 'rank, followerCount) VALUES ('a', 'a', 0, 0, 'Allen', 20, 'a', 'a', 3, 290)' at line 1"), 

1 Ответ

0 голосов
/ 25 декабря 2018

Ранг зарезервировано ключевое слово в MySQL.Посмотрите здесь https://dev.mysql.com/doc/refman/8.0/en/keywords.html

У вас есть два варианта: 1. Переименовать столбец 2. Обернуть столбец обратными чертами, как rank

...