Spaces:
Build error
Build error
import pyodbc | |
import logging | |
import os | |
from dotenv import load_dotenv | |
# Load environment variables from .env file | |
load_dotenv() | |
def connect_to_database() -> pyodbc.Connection: | |
"""Connect to the Azure SQL Database.""" | |
try: | |
server = os.getenv('AZURE_SQL_SERVER') | |
database = os.getenv('AZURE_SQL_DATABASE') | |
username = os.getenv('AZURE_SQL_USERNAME') | |
password = os.getenv('AZURE_SQL_PASSWORD') | |
driver = '{ODBC Driver 17 for SQL Server}' | |
conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}' | |
conn = pyodbc.connect(conn_str) | |
logging.info(f"Connected to the Azure SQL Database at {server}") | |
return conn | |
except pyodbc.Error as e: | |
logging.error(f"Error connecting to the Azure SQL Database: {e}") | |
return None | |
def close_database_connection(conn: pyodbc.Connection) -> None: | |
"""Close the database connection.""" | |
try: | |
if conn: | |
conn.close() | |
logging.info("Database connection closed.") | |
except pyodbc.Error as e: | |
logging.error(f"Error closing the database connection: {e}") | |
# Example usage with context management | |
class DatabaseConnection: | |
def __enter__(self) -> pyodbc.Connection: | |
self.conn = connect_to_database() | |
return self.conn | |
def __exit__(self, exc_type, exc_value, traceback) -> None: | |
close_database_connection(self.conn) | |
# Example usage | |
if __name__ == "__main__": | |
with DatabaseConnection() as conn: | |
if conn: | |
# Perform database operations | |
pass | |