一个简单的python sqlite wrapper

    技术2024-10-19  53

    直接上代码,需要注意的是当执行插入或更新操作时尽量使用execute_batch。sqlite执行事务操作的开销是很大的,所以应尽量减少执行commit的次数。我做了一个简单的实验,插入1百万行的数据(每行三列INT型数据),一条一条插入需要半个小时,而以128K为一个batch批量插入只需要3分钟。

     

    try:     import sqlite3 as sqlite except:     from pysqlite2 import dbapi2 as sqlite

    class SqliteWrapper:     def __init__(self):         self.__conn = None         self.__cursor = None     def __del__(self):         self.close()     def connect(self, dbfile):         self.close()         self.__conn = sqlite.connect(dbfile)         self.__cursor = self.__conn.cursor()     def close(self):         if self.__cursor:             self.__cursor.close()             self.__cursor = None         if self.__conn:             self.__conn.close()             self.__conn = None     def select(self, sql):         self.__cursor.execute(sql)         return self.__cursor.fetchall()     def execute(self, sql):         self.__cursor.execute(sql)         self.__conn.commit()     def execute_batch(self, sqls):         for sql in sqls:             self.__cursor.execute(sql)         self.__conn.commit()

    最新回复(0)