SQL语句中并非所有参数都被使用

2024-04-24 16:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个数据库中获取名称,并用它创建一个新表。我想补充更多的分析,但这是我的出发点,我已经挣扎,我不知道我在哪里犯了错误。你知道吗

mydb = db_login()

# get team
team = pd.read_sql('SELECT * FROM team', con=mydb)
names = team.name.to_list()

这将输出类似于['name1','name2'…]

mycursor = mydb.cursor()
mycursor.execute("DROP TABLE IF EXISTS team_analyse")
mycursor.execute("CREATE TABLE team_analyse (name VARCHAR(50))") #todo add all needed columns
sqlFormula = "INSERT INTO team_analyse (name) VALUES (%s)" #todo initial team commit
mycursor.executemany(sqlFormula, names)
mydb.commit()

最后我得到以下错误:

mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement


Tags: name名称数据库executenames错误tableall
1条回答
网友
1楼 · 发布于 2024-04-24 16:38:26

您应该在这里使用一个INSERT INTO ... SELECT

INSERT INTO team_analyse (name)
SELECT name
FROM team

更新的Python脚本:

mycursor = mydb.cursor()
sql = """INSERT INTO team_analyse (name)
         SELECT name
         FROM team"""
mycursor.execute(sql)

您看到的错误消息告诉您,您传递了一个列表作为要绑定到语句的参数,但没有使用所有参数。实际上,您试图运行的单个insert语句只有一个参数。但是在任何情况下,都不需要将team表中的结果集放入Python的内存中。相反,使用我的建议,让MySQL来完成繁重的工作。你知道吗

相关问题 更多 >