使用 mysql.connector 通过 python 列表将多个条目插入 SQL table

Inserting multiple entries into an SQL table via python lists using mysql.connector

mycursor.execute("CREATE TABLE table_1(ID int, NAME varchar(25), SPORT varchar(15))")

id_list=[stuff]
name_list=[stuff]
sport_list=[stuff]

for i in id_list:
    mycursor.execute("INSERT INTO table_1 VALUES(id_list[i], name_list[i], sport_list[i])")

这里显示了这个错误:

ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[i], name_list[i], sport_list[i])' at line 1

有更好的方法吗?还是我被迫一个一个地插入值?

谢谢!

试试这个:

for (id, name, sport) in zip(id_list, name_list, sport_list):
    query = "INSERT INTO table_1 VALUES(%s, '%s', '%s')" % (id, name, sport)
    mycursor.execute(query)

您的代码存在问题,您发送的是字符串 id_list[i]、name_list[i] ....等等,而不是这些字符串的实际值。

请注意“%s”上的单引号,如果您发送的是字符串,则需要这些单引号。

在此示例中,还请检查如何同时遍历多个列表。

您可以使用 executemany.

而不是循环

这是一个小例子。

import mysql.connector

cnx = mysql.connector.connect(user='username', password='password',
                              host='127.0.0.1',
                              database='test')

cur = cnx.cursor()

#cur.execute("CREATE TABLE table_1(ID int, NAME varchar(25), SPORT varchar(15))")

id_list=[1,2,3]
name_list=['Name1', 'Name2', 'Name3']
sport_list=['Sport1', 'Sport2', 'Sport3']

data = zip(id_list, name_list, sport_list)

sql = "INSERT INTo table_1 VALUES(%s, %s, %s)"

cur.executemany(sql, data)

cnx.commit()