MySQL INSERT在Python中失败,但在MySQL Workbench中工作正常

2024-09-29 09:27:04 发布

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

下面是一个查询,它在MySQL workbench中运行良好,包含示例值,如果我手动插入代码中的值,则可以正常工作,但是当我使用这些值作为参数时会失败。有什么想法吗?在

Python代码:

print player
                cur.execute("""
                            INSERT INTO scoredata
                            (gameid, playerid, starter, pos, min, fgm, fga, tpm, tpa, ftm, fta, oreb, reb, ast, stl, blk, tos, pf, pts)
                            VALUES
                            (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
                            """), (player[0], 
                                   int(player[20]), 
                                   int(player[19]), 
                                   player[3], 
                                   int(player[4]), 
                                   int(player[5]), 
                                   int(player[6]), 
                                   int(player[7]), 
                                   int(player[8]), 
                                   int(player[9]), 
                                   int(player[10]), 
                                   int(player[11]), 
                                   int(player[12]), 
                                   int(player[13]), 
                                   int(player[14]), 
                                   int(player[15]), 
                                   int(player[16]), 
                                   int(player[17]), 
                                   int(player[18]) )
                db.commit()

错误消息:

^{pr2}$

MySQL scoredata表列:

gameid  varchar
playerid    int
starter int
pos varchar
min int
fgm int
fga int
tpm int
tpa int
ftm int
fta int
oreb    int
reb int
ast int
stl int
blk int
tos int
pf  int
pts int

在Workbench中运行良好的MySQL代码:

INSERT INTO scoredata (gameid, playerid, starter, pos, min, fgm, fga, tpm, 
    tpa, ftm, fta, oreb, reb, ast, stl, blk, tos, pf, pts) 
VALUES ('3300601300', 1391, 1, 'G-F', 28, 4, 9, 3, 6, 3, 3, 0, 2, 1, 0, 0, 0, 1, 14)

Tags: 代码posmysqlminintplayerstarterftm
1条回答
网友
1楼 · 发布于 2024-09-29 09:27:04

您没有向execute调用传递数据。注意示例中的右大括号。在

      cur.execute("""
                    INSERT INTO scoredata
                    (gameid, playerid, starter, pos, min, fgm, fga, tpm, tpa, ftm, fta, oreb, reb, ast, stl, blk, tos, pf, pts)
                    VALUES
                    (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
                    """)//*Remove me*
                        , (player[0], 
                           int(player[20]), 
                           int(player[19]), 
                           player[3], 
                           int(player[4]), 
                           int(player[5]), 
                           int(player[6]), 
                           int(player[7]), 
                           int(player[8]), 
                           int(player[9]), 
                           int(player[10]), 
                           int(player[11]), 
                           int(player[12]), 
                           int(player[13]), 
                           int(player[14]), 
                           int(player[15]), 
                           int(player[16]), 
                           int(player[17]), 
                           int(player[18]) )
        db.commit()

相关问题 更多 >