executemany问题,MySQLdb

0 投票
2 回答
4371 浏览
提问于 2025-04-16 04:41

我在使用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)'

撰写回答