Gabriel Genellina wrote: > [...] > and execute: > cur.executemany("insert into log (IP, EntryDate, Requestt, ErrorCode) > values (:ip, :date, :request, :errorcode)", values)
It's probably worth mentioning that pysqlite's executemany() accepts anything iterable for its parameter. So you don't need to build a list beforehand to enjoy the performance boost of executemany(). The deluxe version with generators could look like this: def parse_logfile(): logf = open(...) for line in logf: if ...: row = (value1, value2, value3) yield row logf.close() ... cur.executemany("insert into ... values (c1, c2, c3)", parse_logfile()) -- Gerhard PS: pysqlite internally has a statement cache since verson 2.2, so multiple execute() calls are almost as fast as executemany(). -- http://mail.python.org/mailman/listinfo/python-list