Advertisement
mbratanov

Contacts_database

Feb 11th, 2025
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.89 KB | None | 0 0
  1. import psycopg2
  2. from database.database_interface import DatabaseInterface
  3.  
  4.  
  5. class Database(DatabaseInterface):
  6.     def __init__(self):
  7.         self.host = None
  8.         self.port = None
  9.         self.database = None
  10.         self.user = None
  11.         self.password = None
  12.         self.connection = None
  13.  
  14.     def configure(self, host, port, database, user, password):
  15.         self.host = host
  16.         self.port = port
  17.         self.database = database
  18.         self.user = user
  19.         self.password = password
  20.  
  21.     def connect(self):
  22.         if not all([self.host, self.port, self.database, self.user, self.password]):
  23.             raise ValueError("Database parameters are not configured.")
  24.         self.connection = psycopg2.connect(
  25.             host=self.host,
  26.             port=self.port,
  27.             database=self.database,
  28.             user=self.user,
  29.             password=self.password
  30.         )
  31.  
  32.     def close(self):
  33.         if self.connection:
  34.             self.connection.close()
  35.             self.connection = None
  36.  
  37.     def __enter__(self):
  38.         self.connect()
  39.         return self
  40.  
  41.     def __exit__(self, exc_type, exc_val, exc_tb):
  42.         self.close()
  43.  
  44.     def create_table(self):
  45.         with self as db:
  46.             cursor = db.connection.cursor()
  47.             query = """CREATE TABLE IF NOT EXISTS contacts (
  48.                id SERIAL PRIMARY KEY,
  49.                first_name VARCHAR(50),
  50.                middle_name VARCHAR(50),
  51.                last_name VARCHAR(50),
  52.                full_name VARCHAR(100),
  53.                personal_title VARCHAR(30),
  54.                nickname VARCHAR(50),
  55.                email TEXT
  56.            )"""
  57.             cursor.execute(query)
  58.             db.connection.commit()
  59.  
  60.     def add_contact(
  61.             self,
  62.             first_name: str,
  63.             middle_name: str,
  64.             last_name: str,
  65.             full_name: str,
  66.             personal_title: str,
  67.             nickname: str,
  68.             email: str
  69.     ):
  70.         try:
  71.             with self as db:
  72.                 cursor = db.connection.cursor()
  73.                 query = """
  74.                INSERT INTO contacts (first_name, middle_name, last_name, full_name, personal_title, nickname, email)
  75.                VALUES (%s, %s, %s, %s, %s, %s, %s)
  76.                """
  77.                 cursor.execute(query, (first_name, middle_name, last_name, full_name, personal_title, nickname, email))
  78.                 db.connection.commit()
  79.         except psycopg2.Error as e:
  80.             print(str(e))
  81.  
  82.     def update_contact(
  83.             self,
  84.             contact_id: int,
  85.             first_name: str,
  86.             middle_name: str,
  87.             last_name: str,
  88.             full_name: str,
  89.             personal_title: str,
  90.             nickname: str,
  91.             email: str
  92.     ):
  93.         with self as db:
  94.             cursor = db.connection.cursor()
  95.             query = """
  96.            UPDATE contacts
  97.            SET
  98.                first_name = %s,
  99.                middle_name = %s,
  100.                last_name = %s,
  101.                full_name = %s,
  102.                personal_title = %s,
  103.                nickname = %s,
  104.                email = %s
  105.            WHERE id = %s
  106.            """
  107.             parameters = (first_name, middle_name, last_name, full_name, personal_title, nickname, email, contact_id)
  108.             cursor.execute(query, parameters)
  109.             db.connection.commit()
  110.  
  111.     def delete_contact(self, contact_id):
  112.         with self as db:
  113.             cursor = db.connection.cursor()
  114.             query = "DELETE FROM contacts WHERE id = %s"
  115.             cursor.execute(query, (contact_id,))
  116.             db.connection.commit()
  117.  
  118.     def show_contacts(self):
  119.         with self as db:
  120.             cursor = db.connection.cursor()
  121.             query = "SELECT * FROM contacts"
  122.             cursor.execute(query)
  123.             contacts = cursor.fetchall()
  124.             return contacts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement