【问题标题】:Cannot insert data into database using pymysql, what is wrong with my syntax?无法使用 pymysql 将数据插入数据库,我的语法有什么问题?
【发布时间】:2019-05-23 22:33:18
【问题描述】:

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

【问题讨论】:

    标签: mysql python-3.x pymysql


    【解决方案1】:

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

    你有两个选择 1.重命名列 2. 将列用反引号括起来,如rank

    【讨论】:

    • 哦,它有效。不敢相信是这个原因。非常感谢。我必须了解更多相关信息。
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2013-04-25
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2019-01-07
    相关资源
    最近更新 更多