使用数组中的Python在MySQL中插入多个值

问题描述 投票:1回答:1

我正在尝试将数组中的数据插入MySQL。令我大吃一惊的是,如果对数组执行for循环,如何执行此操作的示例并不多,我发现的每个示例都来自一个已经存在的数组列表。

示例:Inserting an array into mysql with Python

我认为我的for循环和executemany()有问题。

当前错误消息是:

"mysql.connector.errors.ProgrammingError: Not enough parameters for the SQL statement"

有什么建议吗?

以下代码:

connection = mysql.connector.connect(
    host='localhost', 
    database='test',
    user='root', 
    password='pass'
    )

query = "INSERT INTO blues (created, published, publisher) VALUES (%s, %s, %s)"

td = soup.find_all('td')
array = []

for data in td:
    data = re.sub('<[^>]*>', '', str(data))
    array.append(data)

    print(array)

for items in array:
    cursor = connection.cursor()
    cursor.executemany(query, items)
    cursor.commit()

提前感谢!

mysql python-3.x
1个回答
0
投票

我认为您正在混合使用两种解决问题的方法...

一种方法是使用documentation中所述的executemany方法

query = "INSERT INTO blues (created, published, publisher) VALUES (%s, %s, %s)"

# array is built
# Example array:
# data = [
#     ('Jane', date(2005, 2, 12)),
#     ('Joe', date(2006, 5, 23)),
#     ('John', date(2010, 10, 3)),
# ]

cursor = connection.cursor()
cursor.executemany(query, array)
cursor.commit()

另一种方法是自己构建查询...

query = "INSERT INTO blues (created, published, publisher) VALUES "
values = []
for items in array:
    values.append("({0}, {1}, {2})".format(item[0],item[1],item[2])) # Assuming there always 3 elements in each item

query += ",".join(values)
cursor = connection.cursor()
cursor.execute(query)
cursor.commit()

希望这有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.