class DatabaseConnection:
def __init__(self, host, port, username, password, database):
self.host = host
self.port = port
self.username = username
self.password = password
self.database = database
self.connection = None
def get_connection(self):
try:
# 这里假设使用 pymysql 连接数据库,实际需要安装并引入相应库
import pymysql
self.connection = pymysql.connect(
host=self.host,
port=self.port,
user=self.username,
password=self.password,
database=self.database
)
return self.connection
except Exception as e:
print(f"获取数据库连接时出错: {e}")
return None
def close_connection(self):
if self.connection:
try:
self.connection.close()
except Exception as e:
print(f"关闭数据库连接时出错: {e}")
def execute_query(self, query):
try:
connection = self.get_connection()
if connection:
cursor = connection.cursor()
cursor.execute(query)
result = cursor.fetchall()
cursor.close()
return result
except Exception as e:
print(f"执行查询时出错: {e}")
finally:
self.close_connection()
这样设计的好处:
- 异常处理全面:
try - except - finally
结构确保在获取连接和关闭连接过程中出现的异常都能被妥善处理,不至于程序因未捕获的异常而崩溃。在 try
块中尝试获取连接,except
块捕获并处理获取连接时可能出现的异常,在 finally
块中无论获取连接是否成功,都确保连接能被关闭,并且在关闭连接时如果出现异常也能被捕获处理。
- 资源管理清晰:明确的连接获取和释放逻辑,在获取连接失败时不会遗漏关闭连接的操作,避免资源泄露。同时,在执行完数据库操作后,
finally
块保证连接能可靠关闭,确保数据库资源的合理使用。
- 代码可读性与维护性好:将数据库连接相关的操作封装在类中,结构清晰,每个方法的职责明确,便于后续代码的理解、扩展和维护。