我如何懒惰地将csv行传递给executemany()?

时间:2013-07-25 13:27:07

标签: python csv python-db-api executemany

我使用MySQL Connector / Python 1.0.11与Python 3.3和MySQL 5.6.12通过cursor.executemany将csv文件加载到表中(' INSERT INTO ... VALUES&# 39)。使用sqlite3或psycopg2,我可以为seq_of_parameters传递_csv.reader对象,但是MySQL失败了:

mysql.connector.errors.ProgrammingError: Parameters for query must be list or tuple.

很公道,因为文档说它必须是一个序列,_csv.reader对象是enumerator(它定义 iter next ),而不是序列。我显然可以通过' list(my_csv_reader)',但我非常确定它不是懒惰的,这些文件可以有10 ^ 6 +行。有没有办法懒散地通过?或者我是在浪费时间,因为在执行INSERT之前,executemany()会扩展列表? (来自cursor.py的提示:" INSERT语句通过批处理数据进行优化,即使用MySQL多行语法。")也许类似于将迭代器包装在生成器中,ala {{3} }。我非常期待你的想法!

0 个答案:

没有答案