我的问题是在整个应用程序中维护单个数据库连接的最佳方法是什么? 使用单例模式?如何?
需要注意的条件:
Django ORM 不支持我的数据库的驱动程序。由于相同的驱动程序相关问题,我使用pyodbc连接到数据库。现在我有以下用于创建和管理数据库连接的课程:
class DBConnection(object):
def __init__(self, driver, serve,
database, user, password):
self.driver = driver
self.server = server
self.database = database
self.user = user
self.password = password
def __enter__(self):
self.dbconn = pyodbc.connect("DRIVER={};".format(self.driver) +\
"SERVER={};".format(self.server) +\
"DATABASE={};".format(self.database) +\
"UID={};".format(self.user) +\
"PWD={};".format(self.password) + \
"CHARSET=UTF8",
# "",
ansi=True)
return self.dbconn
def __exit__(self, exc_type, exc_val, exc_tb):
self.dbconn.close()
Run Code Online (Sandbox Code Playgroud)
但是这种方法的问题在于它会为每个查询创建新的数据库连接。遵循单例模式的更好方法是什么?如果连接关闭,我能想到的方式将保留对连接的引用。就像是:
def get_database_connection():
conn = DBConnection.connection
if not conn:
conn = DBConnection.connection = DBConnection.create_connection()
return conn …Run Code Online (Sandbox Code Playgroud)