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

标签 mysql python-3.x 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)

表'room'中有一个'id'字段,我将其设置为自动递增。而“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"), 

最佳答案

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

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

关于mysql - 无法使用 pymysql 将数据插入数据库,我的语法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918900/

相关文章:

python - 如何使用 BeautifulSoup 获取页面上特定文本后面的一些内容?

mysql - 明智地找到表部门中第二大的

php - 如何在mysql查询中比较两个数组?

java - JDBC - INSERT 并返回生成的 ID,或者如果 DUPLICATE KEY 返回旧 ID

python - 值错误: unsupported format character 'a' (0x61) at index 55 with URL string

python - 读取 .sql 文件以在 Python 中执行 (pymysql)

mysql - 网站显示 � 即使我正在使用 utf-8

mysql - 数据库困境: actors

python - PYQT 在图片上绘制选择矩形

python - requests.exceptions.ConnectionError : ('Connection aborted.' , gaierror(8, 'nodename nor servname provided, or not known' ))