Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import psycopg2
- from database.database_interface import DatabaseInterface
- class Database(DatabaseInterface):
- def __init__(self):
- self.host = None
- self.port = None
- self.database = None
- self.user = None
- self.password = None
- self.connection = None
- def configure(self, host, port, database, user, password):
- self.host = host
- self.port = port
- self.database = database
- self.user = user
- self.password = password
- def connect(self):
- if not all([self.host, self.port, self.database, self.user, self.password]):
- raise ValueError("Database parameters are not configured.")
- self.connection = psycopg2.connect(
- host=self.host,
- port=self.port,
- database=self.database,
- user=self.user,
- password=self.password
- )
- def close(self):
- if self.connection:
- self.connection.close()
- self.connection = None
- def __enter__(self):
- self.connect()
- return self
- def __exit__(self, exc_type, exc_val, exc_tb):
- self.close()
- def create_table(self):
- with self as db:
- cursor = db.connection.cursor()
- query = """CREATE TABLE IF NOT EXISTS contacts (
- id SERIAL PRIMARY KEY,
- first_name VARCHAR(50),
- middle_name VARCHAR(50),
- last_name VARCHAR(50),
- full_name VARCHAR(100),
- personal_title VARCHAR(30),
- nickname VARCHAR(50),
- email TEXT
- )"""
- cursor.execute(query)
- db.connection.commit()
- def add_contact(
- self,
- first_name: str,
- middle_name: str,
- last_name: str,
- full_name: str,
- personal_title: str,
- nickname: str,
- email: str
- ):
- try:
- with self as db:
- cursor = db.connection.cursor()
- query = """
- INSERT INTO contacts (first_name, middle_name, last_name, full_name, personal_title, nickname, email)
- VALUES (%s, %s, %s, %s, %s, %s, %s)
- """
- cursor.execute(query, (first_name, middle_name, last_name, full_name, personal_title, nickname, email))
- db.connection.commit()
- except psycopg2.Error as e:
- print(str(e))
- def update_contact(
- self,
- contact_id: int,
- first_name: str,
- middle_name: str,
- last_name: str,
- full_name: str,
- personal_title: str,
- nickname: str,
- email: str
- ):
- with self as db:
- cursor = db.connection.cursor()
- query = """
- UPDATE contacts
- SET
- first_name = %s,
- middle_name = %s,
- last_name = %s,
- full_name = %s,
- personal_title = %s,
- nickname = %s,
- email = %s
- WHERE id = %s
- """
- parameters = (first_name, middle_name, last_name, full_name, personal_title, nickname, email, contact_id)
- cursor.execute(query, parameters)
- db.connection.commit()
- def delete_contact(self, contact_id):
- with self as db:
- cursor = db.connection.cursor()
- query = "DELETE FROM contacts WHERE id = %s"
- cursor.execute(query, (contact_id,))
- db.connection.commit()
- def show_contacts(self):
- with self as db:
- cursor = db.connection.cursor()
- query = "SELECT * FROM contacts"
- cursor.execute(query)
- contacts = cursor.fetchall()
- return contacts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement