我正在尝试将数组中的数据插入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()
提前感谢!
我认为您正在混合使用两种解决问题的方法...
一种方法是使用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()
希望这有帮助...