【发布时间】:2011-08-19 19:53:05
【问题描述】:
我目前在将 python 列表导出到 mySQL DB 时遇到问题。 我正在使用 MySQLdb 并使用 executemany 命令。
例如,我有一个列表列表:
k1=[[['Bob', 'Alfred', 'Jen'],
['123 Elm Street', '55 Ninth Ave', '1 Paved Rd'],
[00123, 34565, 30094],
['Newark', 'Salinas', 'Los Angeles'],
['NJ', 'CA', 'CA']],[['Bob1', 'Alfred1', 'Jen1'],
['123 Elm Street1', '55 Ninth Ave1', '1 Paved Rd1'],
[001231, 345651, 300941],
['Newark1', 'Salinas1', 'Los Angeles1'],
['NJ1', 'CA1', 'CA1']]]
然后我尝试(在初始化光标和要使用的数据库之后):
cursor.executemany('''INSERT INTO addresses
(name, street, zipcode, city, state)
VALUES
(%s, %s, %s, %s, %s)''',zip(k1))
我得到一个错误:
_mysql_exceptions.ProgrammingError: not enough arguments for format string
嗯,基本上,我想要列表 k1 到 mySQL db 表“地址”列表中的名称、街道、邮政编码、城市和州以及相应的字段条目。
如果有人能指出我正确的方向,那就太好了。
【问题讨论】:
-
如果它看起来难看,不要道歉,而是阅读如何格式化事物。您使用的是重组文本语法。
-
您的列表项每个包含三个条目,但您的格式字符串预期为五个。另一个问题是您的列表条目列表似乎代表列而不是行。
-
保罗,没错。我确实看到了问题。我想做的是从列表列表中收集 5 个条目(即排序)。这不能使用“zip”吗?
-
法尔马里,很抱歉。你能告诉我你做了什么来格式化列表吗?我确实尝试过缩进 4 个空格,但这没有用:虽然它适用于其他代码。
-
压缩不是你的问题。 SQL 插入语句插入行,而不是列。如果要使用相同的 SQL,则需要重新排列数据结构。
标签: python mysql mysql-python