无法使用 pymysql 将数据插入数据库,我的语法有什么问题?

Cannot insert data into database using pymysql, what is wrong with my syntax?

我正在尝试将一些数据插入到 mysql 中的 table 中。但是我的 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)

table'room'中有一个'id'字段,我设置为自动递增。而 'id' 是唯一的主键。 但是即使我在数据插入时添加了id,它仍然给出相同的错误信息。

收到此错误消息:

编程错误(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"),

Rank 是 mysql 中的保留关键字。看这里https://dev.mysql.com/doc/refman/8.0/en/keywords.html

你有两个选择 1.重命名列 2. 用反引号包裹列,例如 rank