pgutil to class structure

This commit is contained in:
Mikayla Dobson
2023-01-08 11:41:24 -06:00
parent b7648dc4af
commit e886742b0e
3 changed files with 66 additions and 34 deletions

View File

@@ -8,7 +8,7 @@ class Config:
self = format self = format
else: else:
self.data_path: str = "" self.data_path: str = ""
self.pg_config = None self.pg_dsn = None
self.sort_by_match_strength: bool = False self.sort_by_match_strength: bool = False
def __repr__(self): def __repr__(self):
@@ -63,11 +63,9 @@ class Config:
self.data_path = data_path self.data_path = data_path
def set_pg_config(self): def set_pg_config(self):
"""Determine if data should be associated with a PostgreSQL instance, and, if so, record the required connection info""" """Determine if data should be associated with a PostgreSQL instance, and, if so, record the required connection info as dsn string"""
elect_for_pg = input("Connect this program to a PostgreSQL instance? y/n ").lower() elect_for_pg = input("Connect this program to a PostgreSQL instance? y/n ").lower()
if elect_for_pg == "y": if elect_for_pg == "y":
self.pg_config = {}
print("Please provide the relevant connection info. This sensitive information will only be recorded locally on your own machine.") print("Please provide the relevant connection info. This sensitive information will only be recorded locally on your own machine.")
dbname = input("Provide the DB name: ") dbname = input("Provide the DB name: ")
user = input("Provide the username: ") user = input("Provide the username: ")
@@ -91,7 +89,7 @@ class Config:
conn.close() conn.close()
print("Connection successful!") print("Connection successful!")
self.pg_config['dsn'] = dsn self.pg_dsn = dsn
except psycopg2.Error as e: except psycopg2.Error as e:
print("There was an error connecting: ") print("There was an error connecting: ")
print(e) print(e)

63
pgutil.py Normal file
View File

@@ -0,0 +1,63 @@
import psycopg2, json
from config import Config
class PGUTIL:
def __init__(self, config_file: Config = None):
if config_file is None:
load_config = Config()
config_file = load_config.run()
pg_dsn = config_file['pg_dsn']
if pg_dsn is None:
raise Exception("Insufficient data to establish PostgreSQL connection.")
self.config_file = config_file
def create_tables(self):
pg_dsn = self.config_file['pg_dsn']
print("Connecting to PostgreSQL...")
# establish connection and create cursor
conn = psycopg2.connect(pg_dsn)
cur = conn.cursor()
# create base tables
create_label_table = """
CREATE TABLE IF NOT EXISTS label (
id INT PRIMARY KEY,
name varchar
);
"""
create_photo_table = """
CREATE TABLE IF NOT EXISTS photo (
id INT PRIMARY KEY,
path varchar,
label varchar,
matchstrength decimal,
labelid INT REFERENCES label(id)
);
"""
# attempt to insert new tables
print("Creating tables...")
try:
cur.execute(create_label_table)
cur.execute(create_photo_table)
except psycopg2.Error:
raise Exception("Problem executing database table creation")
print("Success!")
# commit changes and close connection
conn.commit()
cur.close()
conn.close()
print("Connection closed.")
def insert_data(self):
pass

View File

@@ -1,29 +0,0 @@
import psycopg2
from config import Config
def postgresutil(config: Config):
pg_config = config.pg_config
if pg_config is None:
raise Exception("Insufficient data to establish PostgreSQL connection.")
conn = psycopg2.connect(pg_config.dsn)
# TO DO: script to create these tables and interact with them
"""
CREATE TABLE IF NOT EXISTS label (
id INT PRIMARY KEY,
name varchar
);
CREATE TABLE IF NOT EXISTS photo (
id INT PRIMARY KEY,
path varchar,
label varchar,
matchstrength decimal,
labelid INT REFERENCES label(id)
);
"""
return conn