我正在尝试在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"),
答案 0 :(得分:1)
排名是mysql中的保留关键字。在这里https://dev.mysql.com/doc/refman/8.0/en/keywords.html
您有两个选择
1.重命名列
2.将列包装在rank