executemany问题,MySQLdb
我在使用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 个回答
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等等换成你实际的列名哦。
2
试着在你的INSERT语句中明确写出所有的列:
STMT = 'INSERT INTO test_table (col1, col2, col3, col4, col5) VALUES (%s, %s, %s, %s, %s)'