类型错误:格式字符串参数不足

0 投票
1 回答
1301 浏览
提问于 2025-04-17 18:26

我有一段代码:

with open('D:\\Downloads\\Train_rev1.csv', 'rb') as csv_file:
    data = csv.reader(csv_file, delimiter=',')
    data.next()
    records = ",".join('({}, {})'.format(row[0], row[1]) for row in data)
print 'inserting records into {} ...'.format('train_rev1')
result = conn.execute("INSERT INTO train_rev1 (id, title) VALUES {}".format(records))
print 'Records inserted into {} {}'.format('train_rev1', 'successful' if result else 'unsuccessful')

然后我得到了这个结果:

> inserting records into train_rev1 ... Traceback (most recent call
> last):   File "I:\test\IceSugar\test.py", line 81, in <module>
>     insert_trainRev1Records(conn)   File "I:\test\IceSugar\test.py", line 54, in insert_trainRev1Records
>     result = conn.execute("INSERT INTO train_rev1 (id, title) VALUES {}".format(records))   File
> "C:\Python27\lib\site-packages\sqlalchemy-0.7.9-py2.7.egg\sqlalchemy\engine\base.py",
> line 1449, in execute
>     params)   File "C:\Python27\lib\site-packages\sqlalchemy-0.7.9-py2.7.egg\sqlalchemy\engine\base.py",
> line 1628, in _execute_text
>     statement, parameters   File "C:\Python27\lib\site-packages\sqlalchemy-0.7.9-py2.7.egg\sqlalchemy\engine\base.py",
> line 1691, in _execute_context
>     context)   File "C:\Python27\lib\site-packages\sqlalchemy-0.7.9-py2.7.egg\sqlalchemy\engine\default.py",
> line 331, in do_execute
>     cursor.execute(statement, parameters)   File "C:\Python27\lib\site-packages\mysql_python-1.2.4c1-py2.7-win32.egg\MySQLdb\cursors.py",
> line 183, in execute
>     query = query % db.literal(args) TypeError: not enough arguments for format string

我完全不知道哪里出了问题?

1 个回答

1

我觉得你的代码看起来没问题:

>>> data = [[1,2],[3,4]]
>>> records = ",".join("({0}, {1})".format(row[0], row[1]) for row in data)
>>> records
'(1, 2),(3, 4)'

当然,这是假设你的 data 是我推测的那种格式。

所以我猜可能是你的 data 对象的格式有问题,或者你没有贴出实际的代码。

撰写回答