37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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
|