使用 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()
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()