57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
|
import os
|
||
|
import sqlite3
|
||
|
from multiprocessing import Lock
|
||
|
|
||
|
|
||
|
class SQLServer:
|
||
|
def __init__(self, server_name, server_dir):
|
||
|
db_dir = '{}/{}'.format(server_dir, server_name)
|
||
|
if not os.path.exists(server_dir):
|
||
|
os.makedirs(server_dir)
|
||
|
self.sql_conn = sqlite3.connect(db_dir, check_same_thread=False)
|
||
|
self.sql_cur = self.sql_conn.cursor()
|
||
|
self.lock = Lock()
|
||
|
|
||
|
# 执行sql
|
||
|
def execute(self, sql, data=None):
|
||
|
try:
|
||
|
self.lock.acquire()
|
||
|
if data is None:
|
||
|
data = []
|
||
|
result = self.sql_cur.execute(sql, data).fetchall()
|
||
|
self.lock.release()
|
||
|
return result
|
||
|
except Exception as e:
|
||
|
self.lock.release()
|
||
|
raise e
|
||
|
|
||
|
# 执行sql
|
||
|
def executemany(self, script, data):
|
||
|
try:
|
||
|
self.lock.acquire()
|
||
|
self.sql_cur.executemany(script, data)
|
||
|
self.lock.release()
|
||
|
except Exception as e:
|
||
|
self.lock.release()
|
||
|
raise e
|
||
|
|
||
|
# 提交事件
|
||
|
def commit(self):
|
||
|
try:
|
||
|
self.lock.acquire()
|
||
|
self.sql_conn.commit()
|
||
|
self.lock.release()
|
||
|
except Exception as e:
|
||
|
self.lock.release()
|
||
|
raise e
|
||
|
|
||
|
def stop(self):
|
||
|
try:
|
||
|
self.lock.acquire()
|
||
|
self.sql_cur.close()
|
||
|
self.sql_conn.close()
|
||
|
self.lock.release()
|
||
|
except Exception as e:
|
||
|
self.lock.release()
|
||
|
raise e
|