mysql - 使用 mysql-python 将值插入 SQL 列

标签 mysql list python-2.7 sql-update mysql-python

我正在尝试使用 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'")

有没有办法通过循环或直接将这些值作为列表插入到列中?

最佳答案

试试这个:

vals_list = ['aa','bb','cc','dd','ee']

对于 enumerate(vals_list) 中的 i、j:

 self.cursor.execute(("UPDATE test.name SET TopAdd = '%s' WHERE nameid = %s" % (str(j),int(i+1))

关于mysql - 使用 mysql-python 将值插入 SQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109753/

相关文章:

mysql - SQL 中的连接顺序是否重要(特定于 MySQL)- FROM 子句中的 NOT 表

mysql - 如何将 MySQL 数据库从一台计算机复制到另一台计算机?

mysql - 使用 Yum 安装 MYSQL 5.7 时出错

python - 列表索引超出范围,当我将范围 1 缩小时,它会丢失一项

python - 使用不同的功能获得不同的对象大小

php - Bigquery 是否支持 PHP PDO

list - 表示一个 nil 列表和/或一个 list(nil)

C:将元素从一个列表移动到另一个列表

python - urllib2 一次又一次地检索带有 Â 和 & 符号/字母的 html,不确定如何删除它们

python - Python 2.7 (win 32) 中没有名为 pygtk 的模块,但它肯定已安装