gpt4 book ai didi

python - 使用 Python 进行 SQL 多次插入

转载 作者:可可西里 更新时间:2023-11-01 06:53:03 26 4
gpt4 key购买 nike

更新
在按照 Nathan 的建议向 execute() 传递行列表后,代码会进一步执行,但仍然卡在 execute 函数上。错误信息如下:

    query = query % db.literal(args)
TypeError: not all arguments converted during string formatting

所以它仍然无法正常工作。有人知道为什么现在出现类型错误吗?
结束更新

我有一个 .xls 格式的大型邮件列表。我将 python 与 xlrd 一起使用,将 xls 文件中的名称和电子邮件检索到两个列表中。现在我想把每个名字和电子邮件放到一个 mysql 数据库中。我在这部分使用 MySQLdb。显然我不想为每个列表项都做一个插入语句。
这是我目前所拥有的。

from xlrd import open_workbook, cellname
import MySQLdb

dbname = 'h4h'
host = 'localhost'
pwd = 'P@ssw0rd'
user = 'root'

book = open_workbook('h4hlist.xls')
sheet = book.sheet_by_index(0)
mailing_list = {}
name_list = []
email_list = []

for row in range(sheet.nrows):
"""name is in the 0th col. email is the 4th col."""
name = sheet.cell(row, 0).value
email = sheet.cell(row, 4).value
if name and email:
mailing_list[name] = email

for n, e in sorted(mailing_list.iteritems()):
name_list.append(n)
email_list.append(e)

db = MySQLdb.connect(host=host, user=user, db=dbname, passwd=pwd)
cursor = db.cursor()
cursor.execute("""INSERT INTO mailing_list (name,email) VALUES (%s,%s)""",
(name_list, email_list))

游标执行时的问题。这是错误:_mysql_exceptions.OperationalError: (1241, 'Operand should contain 1 column(s)')执行()的元组。

我做错了什么?这甚至可能吗?

列表很大,我绝对不能将插入放入循环中。我查看了使用 LOAD DATA INFILE,但我真的不明白如何格式化文件或查询,当我不得不阅读 MySQL 文档时,我的眼睛流血了。我知道我可以可能使用一些在线 xls 到 mysql 转换器,但这对我来说也是一个学习练习。 有没有更好的办法

最佳答案

你需要给executemany()行列表。您不需要将名称和电子邮件分成单独的列表,只需创建一个包含其中两个值的列表。

rows = []

for row in range(sheet.nrows):
"""name is in the 0th col. email is the 4th col."""
name = sheet.cell(row, 0).value
email = sheet.cell(row, 4).value
rows.append((name, email))

db = MySQLdb.connect(host=host, user=user, db=dbname, passwd=pwd)
cursor = db.cursor()
cursor.executemany("""INSERT INTO mailing_list (name,email) VALUES (%s,%s)""", rows)

更新:正如@JonClements 提到的,它应该是 executemany() 而不是 execute()

关于python - 使用 Python 进行 SQL 多次插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com