Administrador de contexto SQlite3 con bloqueo de archivos en python 2.7
¿Es esta la buena manera de bloquear archivos con reentrada en un administrador de contexto en Python 2.7? Solo quiero asegurarme de que rlock () va a ser efectivo para poder obtener una aplicación multiproceso para usar un solo archivo de base de datos.
import sqlite3
import threading
import os
class ConnectionHolder:
def __init__(self, connection):
self.path = connection
self.lock = threading.RLock()
def __enter__(self):
self.lock.acquire()
self.connection = sqlite3.connect(self.path)
self.cursor = self.connection .cursor()
return self.cursor
def __exit__(self, exc_class, exc, traceback):
self.connection .commit()
self.connection .close()
self.lock.release()
conn_holder = ConnectionHolder(os.path.join(os.path.dirname(__file__), 'data/db/database.db'))
if __name__ == '__main__':
with conn_holder as c:
c.execute("SELECT * FROM 'sample_table'")
result = c.fetchall()
print result