Skip to content

Commit 018c13c

Browse files
Antony BaileyAntony Bailey
authored andcommitted
partially working
1 parent 39f4aca commit 018c13c

File tree

8 files changed

+74
-15
lines changed

8 files changed

+74
-15
lines changed

DatabaseConnector.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import MSSQLConnector
2-
import MariaDBConnector
3-
import OracleConnector
4-
import PostgresConnector
1+
from MSSQLConnector import MSSQLConnector
2+
from MariaDBConnector import MariaDBConnector
3+
from OracleConnector import OracleConnector
4+
from PostgresConnector import PostgresConnector
55
from SQLYExecutionError import SQLYExecutionError
6-
import SQLiteConnector
6+
from SQLYUtils import SQLYUtils
7+
from SQLiteConnector import SQLiteConnector
78

89

910
class DatabaseConnector:
@@ -51,3 +52,22 @@ def get_connector(db_type, connection):
5152
if db_type not in connectors:
5253
raise SQLYExecutionError("Unsupported database type: " + db_type)
5354
return connectors[db_type](connection)
55+
56+
def execute_query(self, query: dict, db_type: str, connection: Any):
57+
"""
58+
Executes a SQLY query against a specified database.
59+
60+
Args:
61+
query (dict): The query dictionary"
62+
db_type (str): The type of the database (e.g., "sqlite", "mariadb", "postgres", "oracle", "mssql").
63+
connection: The connection object or parameters required to establish the database connection.
64+
65+
Returns:
66+
The result of the executed query.
67+
68+
Raises:
69+
SQLYExecutionError: If the query is invalid or an error occurs during execution.
70+
"""
71+
db_connector = DatabaseConnector.get_connector(db_type, connection)
72+
sql, params = SQLYUtils.translate_to_sql(query)
73+
return db_connector.execute(sql, params)

MSSQLConnector.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import pyodbc
12
from BaseDBConnector import BaseDBConnector
23

34

@@ -14,4 +15,19 @@ class MSSQLConnector(BaseDBConnector):
1415
Methods:
1516
None
1617
"""
17-
pass
18+
def __init__(self, connection):
19+
"""
20+
Initializes the MSSQLConnector with a database connection.
21+
22+
Args:
23+
connection (Union[str, pyodbc.Connection]): Either a connection string or a
24+
pyodbc Connection object. If a string is provided, it will be used to
25+
establish a new connection.
26+
27+
Notes:
28+
If a connection string is provided, it should be in the format required by pyodbc,
29+
typically including server, database, authentication details, and other relevant parameters.
30+
"""
31+
if isinstance(connection, str):
32+
connection = pyodbc.connect(connection)
33+
super().__init__(connection)

MariaDBConnector.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import mysql.connector
12
from BaseDBConnector import BaseDBConnector
23

3-
44
class MariaDBConnector(BaseDBConnector):
55
"""
66
MariaDBConnector is a class that inherits from BaseDBConnector.
@@ -14,4 +14,7 @@ class MariaDBConnector(BaseDBConnector):
1414
Methods:
1515
Inherits all methods from BaseDBConnector.
1616
"""
17-
pass
17+
def __init__(self, connection):
18+
if isinstance(connection, str):
19+
connection = mysql.connector.connect(connection)
20+
super().__init__(connection)

OracleConnector.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import cx_Oracle
12
from BaseDBConnector import BaseDBConnector
23

34

@@ -15,4 +16,7 @@ class OracleConnector(BaseDBConnector):
1516
Methods:
1617
None
1718
"""
18-
pass
19+
def __init__(self, connection):
20+
if isinstance(connection, str):
21+
connection = cx_Oracle.connect(connection)
22+
super().__init__(connection)

PostgresConnector.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import psycopg2
12
from BaseDBConnector import BaseDBConnector
23

3-
44
class PostgresConnector(BaseDBConnector):
55
"""
66
PostgresConnector is a class that inherits from BaseDBConnector and serves as a connector to a PostgreSQL database.
@@ -14,4 +14,7 @@ class PostgresConnector(BaseDBConnector):
1414
Methods:
1515
None
1616
"""
17-
pass
17+
def __init__(self, connection):
18+
if isinstance(connection, str):
19+
connection = psycopg2.connect(connection)
20+
super().__init__(connection)

SQLYUtils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def execute_query(query: dict, datasource, db_type):
4848
Returns:
4949
The result of the executed query.
5050
"""
51-
db_connector = DatabaseConnector.get_connector(db_type, datasource)
51+
db_connector = DatabaseConnector.DatabaseConnector(db_type, datasource)
5252
return db_connector.execute_query(query)
5353

5454
@staticmethod

SQLiteConnector.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import sqlite3
12
from BaseDBConnector import BaseDBConnector
23

3-
44
class SQLiteConnector(BaseDBConnector):
55
"""
66
SQLiteConnector is a class that inherits from BaseDBConnector.
@@ -15,4 +15,7 @@ class SQLiteConnector(BaseDBConnector):
1515
Methods:
1616
None
1717
"""
18-
pass
18+
def __init__(self, connection):
19+
if isinstance(connection, str):
20+
connection = sqlite3.connect(connection)
21+
super().__init__(connection)

__init__.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
from SQLYParser import SQLYParser
22
from SQLYExecutor import SQLYExecutor
33
from SQLYError import SQLYError
4+
from SQLYParseError import SQLYParseError
5+
from SQLYExecutionError import SQLYExecutionError
6+
from SQLiteConnector import SQLiteConnector
7+
from MariaDBConnector import MariaDBConnector
8+
from PostgresConnector import PostgresConnector
9+
from OracleConnector import OracleConnector
10+
from MSSQLConnector import MSSQLConnector
411

5-
__all__ = ["SQLYParser", "SQLYExecutor", "SQLYError"]
12+
__all__ = [
13+
"SQLYParser", "SQLYExecutor", "SQLYError", "SQLYParseError", "SQLYExecutionError",
14+
"SQLiteConnector", "MariaDBConnector", "PostgresConnector", "OracleConnector", "MSSQLConnector"
15+
]

0 commit comments

Comments
 (0)