mysql - 如何将数据插入包含一列的表中?
问题描述
我目前正在学习 Python 和 MySQL,如果我的表只有一列(实际上是一个自动递增的 id 和一列),我在插入数据时会遇到问题。
我尝试了几种语法,用引号和括号“玩”,几种实现 execute() 方法的方法,但没有任何效果。
这是我的声明:
import mysql.connector
db_name = "purbeurre"
list_categories = ['Drinks', 'Meat', 'Bread']
cnx = mysql.connector.connect(user='toto', password='toto', host='123.456.0.78')
cursor = cnx.cursor()
cursor.execute("USE {}".format(db_name))
insert_categories = ("INSERT INTO Categories (name) VALUES (%s)")
cursor.executemany(insert_categories, list_categories)
错误是:“ValueError:无法处理参数”
如果我添加一列,则该语句将变为该语句并且可以正常工作:
import mysql.connector
db_name = "purbeurre"
list_categories = [('Drinks', 'Liquid products'), ('Meat', 'All kind of meat', ('Bread', 'Bakery products')]
cnx = mysql.connector.connect(user='toto', password='toto', host='123.456.0.78')
cursor = cnx.cursor()
cursor.execute("USE {}".format(db_name))
insert_categories = ("INSERT INTO Categories (name, description) VALUES (%s)")
cursor.executemany(insert_categories, list_categories)
如您所见,唯一的区别是列数。
知道会发生什么吗?
解决方案
我收到了答案。
数据列表未正确定义,这是正确的语法:
list_categories = [('Drinks',), ('Meat',), ('Bread',)]
注意括号关闭前的逗号,以确保列表中的每个元素都是元组。
推荐阅读
- flutter - Cloud Firestore:排列文档
- python - 在 Python 中使用 Paramiko 执行 SFTP 命令
- sparql - 三元组的 QName (MarkLogic)
- java - 如何按属性对对象列表进行分组,然后使用 (Key, Value) 对迭代结果?
- android - 外部一次性是否在rxjava中自动配置内部一次性?
- angular - Angular 5 从 Angular-cli.json 加载 CDN 脚本标签
- reactjs - 如何使用包含子表的 ReactTable 制作表
- docker - Docker 和 Makefile 构建
- microsoft-graph-api - MS Graph API 何时结束 Beta 版?
- java - 如何将类文件中的所有开关案例放入数组中