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