executemany问题,MySQLdb

时间:2010-09-28 09:34:47

标签: python sql mysql database api

我正在使用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 个答案:

答案 0 :(得分:2)

尝试明确地在INSERT中写入所有列:

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

答案 1 :(得分: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等更改为您的真实列名。