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

时间:2015-03-30 04:18:03

标签: python sql psycopg2 psql

当我从我的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")

这是表格定义

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

1 个答案:

答案 0 :(得分:2)

您的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))