video_monitor/app/utils/Database.py

37 lines
1.3 KiB
Python
Raw Permalink Normal View History

2026-08-30 22:22:11 +08:00
import threading
from django.db import connection
g_dbLock = threading.Lock()# 用于操作数据库的全局锁20240930新增由于sqlite不支持锁因此在程序中做锁控制
class Database(object):
def __init__(self, logger):
self.logger = logger
def select(self, sql, params=None):
data = []
with g_dbLock:
cursor = connection.cursor()
cursor.execute(sql, params or None)
try:
rawData = cursor.fetchall()
col_names = [desc[0] for desc in cursor.description]
for row in rawData:
d = {}
for index, value in enumerate(row):
d[col_names[index]] = value
data.append(d)
except Exception as e:
self.logger.error("Database.select() error:%s,sql:%s" % (str(e),sql))
return data
def execute(self, sql, params=None):
ret = False
with g_dbLock:
try:
cursor = connection.cursor()
cursor.execute(sql, params or None)
ret = True
except Exception as e:
self.logger.error("Database.execute() error:%s,sql:%s" % (str(e), sql))
return ret