From 44ae32eb92f1299b940b0d96bd563e0abd82885f Mon Sep 17 00:00:00 2001 From: Leon Luttenberger Date: Tue, 13 Feb 2024 14:35:24 -0600 Subject: [PATCH 1/2] refactor create_sql_server_database --- tests/unit/test_sqlserver.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/tests/unit/test_sqlserver.py b/tests/unit/test_sqlserver.py index 244408652..d5cd7ca18 100644 --- a/tests/unit/test_sqlserver.py +++ b/tests/unit/test_sqlserver.py @@ -17,26 +17,17 @@ @pytest.fixture(scope="module", autouse=True) -def create_sql_server_database(databases_parameters): - connection_str = ( - f"DRIVER={{ODBC Driver 17 for SQL Server}};" - f"SERVER={databases_parameters['sqlserver']['host']},{databases_parameters['sqlserver']['port']};" - f"UID={databases_parameters['user']};" - f"PWD={databases_parameters['password']}" - ) - con = pyodbc.connect(connection_str, autocommit=True) +def create_sql_server_database(databases_parameters) -> None: sql_create_db = ( f"IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = '{databases_parameters['sqlserver']['database']}') " "BEGIN " f"CREATE DATABASE {databases_parameters['sqlserver']['database']} " "END" ) - with con.cursor() as cursor: - cursor.execute(sql_create_db) - con.commit() - con.close() - - yield + with wr.sqlserver.connect("aws-sdk-pandas-sqlserver") as con: + with con.cursor() as cursor: + cursor.execute(sql_create_db) + con.commit() @pytest.fixture(scope="function") From fbeca748105f409125afa5b7112606f6eebe9579 Mon Sep 17 00:00:00 2001 From: Leon Luttenberger Date: Tue, 13 Feb 2024 15:22:28 -0600 Subject: [PATCH 2/2] refactor not to use wr.sqlserver.connect --- tests/unit/test_sqlserver.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/tests/unit/test_sqlserver.py b/tests/unit/test_sqlserver.py index d5cd7ca18..0abcb1475 100644 --- a/tests/unit/test_sqlserver.py +++ b/tests/unit/test_sqlserver.py @@ -1,5 +1,8 @@ +from __future__ import annotations + import logging from decimal import Decimal +from typing import Any import boto3 import pyarrow as pa @@ -8,6 +11,7 @@ import awswrangler as wr import awswrangler.pandas as pd +from awswrangler import _databases as _db_utils from .._utils import ensure_data_types, get_df, pandas_equals @@ -17,14 +21,24 @@ @pytest.fixture(scope="module", autouse=True) -def create_sql_server_database(databases_parameters) -> None: +def create_sql_server_database(databases_parameters: dict[str, Any]) -> None: + attrs = _db_utils.get_connection_attributes(connection="aws-sdk-pandas-sqlserver") + connection_str = ( + f"DRIVER={{ODBC Driver 17 for SQL Server}};" + f"SERVER={attrs.host},{attrs.port};" + f"UID={attrs.user};" + f"PWD={attrs.password}" + ) + + database_name = databases_parameters["sqlserver"]["database"] sql_create_db = ( - f"IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = '{databases_parameters['sqlserver']['database']}') " + f"IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = '{database_name}') " "BEGIN " - f"CREATE DATABASE {databases_parameters['sqlserver']['database']} " + f"CREATE DATABASE {database_name} " "END" ) - with wr.sqlserver.connect("aws-sdk-pandas-sqlserver") as con: + + with pyodbc.connect(connection_str, autocommit=True) as con: with con.cursor() as cursor: cursor.execute(sql_create_db) con.commit()