2013-08-23 66 views
0

以下是我在MySQL工作台中运行良好的查询,其中包含示例值,如果手动插入代码中的值,但在使用时失败值作为参数。有任何想法吗?MySQL INSERT在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() 

错误消息:

['330060130', 103, 'Roy Devyn Marble', 'G-F', '28', '4', '9', '3', '6', '3', '3', '0', '2', '1', '0', '0', '0', '1', '14', 1, 1391] 
Traceback (most recent call last): 
    File "C:\Users\jcaine\workspace\BasketballStats\src\BasketballStats\basketballstats.py", line 350, in <module> 
    insert_game_data('20130106', '20130106') 
    File "C:\Users\jcaine\workspace\BasketballStats\src\BasketballStats\basketballstats.py", line 284, in insert_game_data 
    """), (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])) 
    File "c:\users\jcaine\appdata\local\temp\easy_install-7_fysp\MySQL_python-1.2.3-py2.7-win32.egg.tmp\MySQLdb\cursors.py", line 174, in execute 
    File "c:\users\jcaine\appdata\local\temp\easy_install-7_fysp\MySQL_python-1.2.3-py2.7-win32.egg.tmp\MySQLdb\connections.py", line 36, in defaulterrorhandler 
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' at line 4") 

的MySQL scoredata表列:

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) 

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 

MySQL代码,在工作台运行正常

回答

2

您没有将数据传递给执行调用。请注意示例中的右大括号。

 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() 
+0

谢谢!就是这样......一个愚蠢的错误。 – jcaine04

相关问题