-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDBHelper.py
More file actions
83 lines (68 loc) · 2.76 KB
/
Copy pathDBHelper.py
File metadata and controls
83 lines (68 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import pyodbc
class DBHelper:
def __init__(self):
connection_string = 'DRIVER={SQL Server};SERVER=DB1;DATABASE=DataProcessingAI;UID=dataprocessing;PWD=dataprocessing'
self.connection_string = connection_string
self.connection = None
def connect(self):
try:
self.connection = pyodbc.connect(self.connection_string)
except Exception as e:
print(f"Connection error: {str(e)}")
def disconnect(self):
try:
if self.connection:
self.connection.close()
except Exception as e:
print(f"Disconnection error: {str(e)}")
def execute_query(self, query, params=None):
try:
cursor = self.connection.cursor()
if params:
cursor.execute(query, params)
else:
cursor.execute(query)
self.connection.commit()
cursor.close()
except Exception as e:
print(f"Query execution error: {str(e)}")
def create_record(self, table_name, data):
placeholders = ', '.join(['?'] * len(data))
columns = ', '.join(data.keys())
query = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"
values = list(data.values())
self.execute_query(query, values)
def read_records(self, table_name, columns=None, condition=None):
if not columns:
columns = '*'
query = f"SELECT {columns} FROM {table_name}"
if condition:
query += f" WHERE {condition}"
cursor = self.connection.cursor()
cursor.execute(query)
# Fetch column names from the cursor description
column_names = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
cursor.close()
return rows, column_names
def read_records_join(self, table_name, columns=None, joins=None, condition=None):
if not columns:
columns = '*'
query = f"SELECT {columns} FROM {table_name}"
if joins:
query += f" {joins} "
if condition:
query += f" WHERE {condition}"
cursor = self.connection.cursor()
cursor.execute(query)
rows = cursor.fetchall()
cursor.close()
return rows
def update_record(self, table_name, data, condition):
set_values = ', '.join([f"{key} = ?" for key in data.keys()])
query = f"UPDATE {table_name} SET {set_values} WHERE {condition}"
values = list(data.values())
self.execute_query(query, values)
def delete_record(self, table_name, condition):
query = f"DELETE FROM {table_name} WHERE {condition}"
self.execute_query(query)