2010-09-28 63 views
0

我使用MySQLdb的和遇到以下問題:executemany問題,MySQLdb的

STMT="""INSERT INTO test_table VALUES (%s, %s, %s, %s, %s)""" 
rows=[('Wed Apr 14 14:00:00 2010', 23L, -2.3, 4.41, 0.83923)] 

conn.cursor().executemay(STMT, rows) 

結果:

Traceback (most recent call last): 
    File "run.py", line 122, in <module> 
    File "C:\Python25\lib\site-packages\mysql_python-1.2.2.0002-py2.5-win32.egg\MySQLdb\cursors.py", line 276, in _do_query 
    db.query(q) 
_mysql_exceptions.OperationalError: (1136, "Column count doesn't match value count at row 1") 

任何提示?

回答

2

試着寫的所有列在INSERT明確:

STMT = 'INSERT INTO test_table (col1, col2, col3, col4, col5) VALUES (%s, %s, %s, %s, %s)' 
+1

+1幾乎完全是我寫的,甚至是假的列名都是一樣的! – 2010-09-28 09:39:46

+0

這樣做。我有一個自動增量ID,我沒有在我的聲明中設置。笨。但是,謝謝你的快速回答。 – rocksportrocker 2010-09-28 10:38:41

1

test_table中共有多少列?可能不是5,從錯誤判斷。嘗試運行SHOW CREATE TABLE test_table以查看錶格是如何定義的。

當插入新列時,顯式列出列名是個好主意。試試這個:

INSERT INTO test_table (col1, col2, col3, col4, col5) VALUES (%s, %s, %s, %s, %s) 

您應該將col1,col2等更改爲您的實際列名稱。