我想在Python 2.7中使用MySQLdb插入值到SQL表中的列。該命令將列表插入1列時遇到問題。插入值到SQL列與MySQL-python
我有一個名爲「名」簡單的表如下所示:
+--------+-----------+----------+--------+
| 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
我現在有,我想插入列TopAdd作爲列的值5個值的列表。這是清單。
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」語句中。 – Air 2014-12-02 16:38:45