我使用Python及其MySQLdb模块将一些测量数据导入Mysql数据库。我们拥有的数据量相当高(目前约为250 MB的csv文件,还有更多内容)。Python + MySQLdb executemany
目前我使用cursor.execute(...)导入一些元数据。这不是问题,因为这些只有少数条目。
的问题是,当我尝试使用cursor.executemany()进口数量较多的实际测量数据,MySQLdb的提出了一个
TypeError: not all arguments converted during string formatting
我当前的代码是
def __insert_values(self, values):
cursor = self.connection.cursor()
cursor.executemany("""
insert into values (ensg, value, sampleid)
values (%s, %s, %s)""", values)
cursor.close()
哪里values
是每个包含三个字符串的元组列表。任何想法可能是这个错误?
编辑:
值由
yield (prefix + row['id'], row['value'], sample_id)
生成,然后读入一个列表千出现的同时,行和迭代器csv.DictReader
到来。
您是否验证了值包含正确的数据? 另外,你应该看看使用LOAD LOCAL DATA INFILE。它可以快得多。 – 2009-06-10 10:36:38
问题是数据需要进行预处理(目前在同一个python脚本中完成),并且创建此类大型数据集的冗余副本不太可行。 这些值应该没问题,因为我使用调试器检查了这些值。 – lhahne 2009-06-10 10:44:14