psycopg2 错误说我在插入文本/字符串时插入整数

psycopg2 error say i am inserting integer when i am inserting text/ string

当我 运行 来自我的 python 应用程序的查询时

DB.execute("insert into matches values(%s ,%s, %s, %s)", (player1, player2, player1_result, player2_result,))

我收到这个错误

psycopg2.DataError: invalid input syntax for integer: "win"
LINE 1: insert into matches values(689 ,690, 'win', 'lose')
                                             ^

player1、player2、player1_result 和 player2_result 是此处包含函数的参数

reportMatch(id1, id2, "win", "lose")

这里是 table 定义

create table matches ( player1 serial references players, player2 serial references players, player1_result text, player2_result text, match_ID serial primary key);

您的SQL查询是:

insert into matches
    values(%s ,%s, %s, %s)

(然后是值)

这是错误的形式,因为插入顺序取决于列的声明顺序。

使用 insert 时,您应该明确列出列,因此 SQL 看起来像:

insert into matches(player1, player2, player1_result, player2_result)
    values(%s ,%s, %s, %s)

在您的陈述中,这是:

DB.execute("insert into matches(player1, player2, player1_result, player2_result) values(%s ,%s, %s, %s)", (player1, player2, player1_result, player2_result))