mysql - 无法使用 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 行"),
解决方案
rank是mysql中的保留关键字。看这里https://dev.mysql.com/doc/refman/8.0/en/keywords.html
你有两个选择 1. 重命名列 2. 用反引号包裹列rank
推荐阅读
- python - 冒泡排序无限循环错误的变化
- reactjs - 如何在 ReactJS 上触发组件中的状态更改?
- arrays - Angular - formGroups 数组的 setValue() 设置整个 formArray 值的最后一个对象
- visual-studio - 转换 netcore2.2 -> netstandard2:runcommand 属性未定义
- node.js - 命令行和 Node.js 通信(不关闭)
- c - 有没有办法在不使用 void 指针的情况下返回 C 函数中的任何类型?
- javascript - npm install 命令中显示了一些漏洞
- mysql - 如何检索连接表SQL的所有记录
- mongodb - 每个集合 MongoDB 有多个 JSON Schema 验证器
- color-space - 向量空间中 rgb 颜色的向量长度是什么意思