Postgres error“错误:INSERT的目标列多于表达式”

2024-10-02 18:27:57 发布

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

每当我运行这段代码时,我都会收到一个错误消息:“error%s%e INSERT的目标列数多于表达式数”,fthg下显示一个^。考虑到fthg已经定义好了,你知道这是什么问题吗?非常感谢!在

 cur.execute("CREATE TABLE IF NOT EXISTS soccerleague.games (gameId SERIAL PRIMARY KEY, homeTeamId INTEGER, FOREIGN KEY (homeTeamId) REFERENCES soccerleague.teams(id),awayTeamId INTEGER, FOREIGN KEY (awayTeamId) REFERENCES soccerleague.teams(id), fthg INTEGER, athg INTEGER, ftr VARCHAR, refereeId INTEGER, FOREIGN KEY (refereeId) REFERENCES soccerleague.referees(id), HY INTEGER, AY INTEGER)")

data3 = (teamsDict[homeTeam], teamsDict[awayTeam], fthg, athg, ftr, refereesDict[refereeName], hy, ay)
query3 = "INSERT INTO soccerleague.games (homeTeamId, awayTeamId, fthg, athg, ftr, refereeId, hy, ay) VALUES"
query3 += "('" + str(data3) + "', '" + x + "'),"
query3 = query3[:-1] + ";"

Tags: keyidintegergamesinsertreferencesforeignftr
1条回答
网友
1楼 · 发布于 2024-10-02 18:27:57

问题不在于创建表,而在于设置要插入的数据时。在

query3 += "('" + str(data3) + "', '" + x + "'),"行指示先插入data3的内容,然后插入{}的内容,其和为2个参数。insert语句query3 = "INSERT INTO soccerleague.games (homeTeamId, awayTeamId, fthg, athg, ftr, refereeId, hy, ay) VALUES"引用了8个参数。要解决这个问题,要么提供8个值(有些值可能为null),要么将insert语句缩减到只包含2个firsts字段。在

即使将data3设置为包含所需的所有值,insert语句仍将其作为单引号字符串写入,该字符串只映射到第一个字段。在

相关问题 更多 >