我正在使用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")
任何提示?
答案 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等更改为您的真实列名。