【发布时间】:2015-01-22 10:55:48
【问题描述】:
我正在尝试使用 Python 2.7 中的 MySQLdb 将值插入 SQL 表的列中。我在将列表插入 1 列的命令时遇到问题。
我有一个名为“name”的简单表,如下所示:
+--------+-----------+----------+--------+
| nameid | firstname | lastname | TopAdd |
+--------+-----------+----------+--------+
| 1 | Cookie | Monster | |
| 2 | Guy | Smiley | |
| 3 | Big | Bird | |
| 4 | Oscar | Grouch | |
| 5 | Alastair | Cookie | |
+--------+-----------+----------+--------+
这是我创建表格的方式:
CREATE TABLE `name` (
`nameid` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(45) DEFAULT NULL,
`lastname` varchar(45) DEFAULT NULL,
`TopAdd` varchar(40) NOT NULL,
PRIMARY KEY (`nameid`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8
这是我填充表格的方式:
INSERT INTO `test`.`name`
(`firstname`,`lastname`)
VALUES
("Cookie","Monster"),
("Guy","Smiley"),
("Big","Bird"),
("Oscar","Grouch"),
("Alastair","Cookie");
免责声明:上述 MySQL 示例的原始来源是 here。
以下是我创建名为 TopAdd 的新列的方法:
ALTER TABLE name ADD TopAdd VARCHAR(40) NOT NULL
我现在有一个包含 5 个值的列表,我想将它们插入到 TopAdd 列中作为该列的值。这是清单。
vals_list = ['aa','bb','cc','dd','ee']
这是我尝试过的(循环内的 UPDATE 语句):
vals = tuple(vals_list)
for self.ijk in range (0,len(self.vals)):
self.cursor.execute ("UPDATE name SET TopAdd = %s WHERE 'nameid' = %s" % (self.vals[self.ijk],self.ijk+1))
我收到以下错误消息:
Traceback (most recent call last):
File "C:\Python27\mySQLdbClass.py", line 70, in <module>
[Finished in 0.2s with exit code 1]main()
File "C:\Python27\mySQLdbClass.py", line 66, in main
db.mysqlconnect()
File "C:\Python27\mySQLdbClass.py", line 22, in mysqlconnect
self.cursor.execute ("UPDATE name SET TopAdd = %s WHERE 'nameid' = %s" % (self.vals[self.ijk],self.ijk+1))
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 'aa' in 'field list'")
有没有办法通过循环或直接将这些值插入到列中?
【问题讨论】:
-
您可能希望修复此问题中的 DDL;如果表的定义没有
TopAdd的默认值,您的INSERT查询将失败。由于您稍后添加了该列,因此它看起来不应该包含在原始CREATE TABLE语句中。
标签: mysql list python-2.7 sql-update mysql-python