面试题答案
一键面试import logging
class CustomDBConnectionError(Exception):
pass
class CustomSQLSyntaxError(Exception):
pass
class DatabaseConnection:
def __init__(self, host, port, user, password, database):
self.host = host
self.port = port
self.user = user
self.password = password
self.database = database
self.connection = None
def __enter__(self):
try:
# 这里模拟创建数据库连接,实际应用中需要替换为真实的连接方法
self.connection = f"Connected to {self.host}:{self.port} as {self.user} on {self.database}"
return self
except Exception as e:
raise CustomDBConnectionError(f"Database connection error: {e}")
def execute_query(self, query):
try:
# 这里模拟执行查询,实际应用中需要替换为真实的执行查询方法
print(f"Executing query: {query} on connection {self.connection}")
return "Query result"
except Exception as e:
raise CustomSQLSyntaxError(f"SQL syntax error: {e}")
def __exit__(self, exc_type, exc_val, exc_tb):
if self.connection:
# 这里模拟关闭数据库连接,实际应用中需要替换为真实的关闭方法
self.connection = None
print("Database connection closed")
if exc_type == CustomDBConnectionError:
logging.error(f"Database connection error occurred: {exc_val}")
elif exc_type == CustomSQLSyntaxError:
logging.error(f"SQL syntax error occurred: {exc_val}")
return True
你可以这样使用:
with DatabaseConnection('localhost', 5432, 'user', 'password', 'test_db') as db:
try:
result = db.execute_query("SELECT * FROM users")
print(result)
except (CustomDBConnectionError, CustomSQLSyntaxError) as e:
pass