write read functionality

This commit is contained in:
Camryn Thomas 2024-01-14 14:25:25 -06:00
parent 83f1dc6a9f
commit 72831a8e1d
Signed by: cptlobster
GPG Key ID: 6D341D688163A176

View File

@ -3,13 +3,14 @@ conditions (i.e. missing columns) without terminating the entire program. Use th
handle database interactions, either as a standalone object or in a context manager."""
import os
import psycopg2
from psycopg2 import DatabaseError
DB_ADDRESS = os.getenv('DB_ADDRESS', 'localhost')
DB_PORT = os.getenv('DB_PORT', 5432)
DB_USER = os.getenv('DB_USER', 'postgres')
DB_PASSWORD = os.getenv('DB_PASSWORD', '')
DB_NAME = os.getenv('DB_NAME', 'postgres')
DB_TABLE = os.getenv('DB_TABLE', 'cables')
class DBConnector:
@ -21,9 +22,12 @@ class DBConnector:
db.read()
"""
def _db_start(self):
self.conn = psycopg2.connect(
f"host={DB_ADDRESS} port={DB_PORT} dbname={DB_NAME} user={DB_USER} password={DB_PASSWORD}")
self.cur = self.conn.cursor()
try:
self.conn = psycopg2.connect(
f"host={DB_ADDRESS} port={DB_PORT} dbname={DB_NAME} user={DB_USER} password={DB_PASSWORD}")
self.cur = self.conn.cursor()
except DatabaseError as e:
def _db_stop(self):
self.cur.close()
@ -45,7 +49,8 @@ class DBConnector:
try:
self.cur.execute(sql)
result = self.cur.fetchall()
except psycopg2.DatabaseError as e:
except DatabaseError as e:
print(f"DB ERROR [{e.pgcode}]: {e.pgerror}")
result = []
return result
@ -54,7 +59,13 @@ class DBConnector:
:param kwargs: Column constraints; i.e. what value to filter by in what column.
:returns: A list of dictionaries of all matching rows, or an empty list if no match."""
pass
args = []
for kw in kwargs.keys():
args.append(f"{kw} ILIKE {kwargs['kw']}")
query = f"SELECT * FROM {DB_TABLE}"
if len(args) > 0:
query += f" WHERE {' AND '.join(args)}"
return self._query(query)
def write(self, **kwargs):
"""Write a row to the database.