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