首页 > 解决方案 > 无法使用 pymysql 将数据插入数据库,我的语法有什么问题?

问题描述

我正在尝试将一些数据插入到 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)

表“房间”中有一个“id”字段,我将其设置为自动增量。而“id”是唯一的主键。但即使我在数据插入期间添加了 id,它仍然给出了相同的错误消息。

收到此错误消息:

ProgrammingError(1064, "您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'rank, followerCount 附近使用的正确语法) VALUES ('a', 'a', 0, 0, 'Allen', 20, 'a', 'a', 3, 290)' 在第 1 行"), 

标签: mysqlpython-3.xpymysql

解决方案


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

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


推荐阅读