您的位置:首页 > 移动开发

一个简单的python sqlite wrapper

2011-02-07 00:19 381 查看
直接上代码,需要注意的是当执行插入或更新操作时尽量使用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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: