Скрипт не добавляет данные в Postgres SQL [Python]
извиняюсь за глупый возможно глупый вопрос, но я не могу разобраться :)
ChatGPT тоже мне особо не помог)
Суть проблемы:
Делаю скрипт для заполнения базы данных, столкнулся с такой проблемой - данные не вносятся в БД.
Ошибок не выдает, скрипт работает, но данные не вносятся, таблица как была пустой, так она ей и осталась.
ЯП - Python, код прилагается ниже.
Структура таблиц (SQL код) так же прилагается.
Python
"""Скрипт для заполнения данными таблиц в БД Postgres."""
import psycopg2
import csv
class data_base:
def __init__(self, db_name, password, user='postgres'):
"""
:param db_name: Название базы данных
:param user: Имя пользователя (администратора бд) (default = postgres)
:param password: Пароль
"""
self.connection = psycopg2.connect(host='localhost', database=db_name,
user=user, password=password)
self.cursor = self.connection.cursor()
def table_insert(self, from_file='', table_name=''):
"""
:param from_file: Файл от куда берутся данные для бд,
расположение должно быть в папке north_data (example: customers_data.csv)
:param table_name: Название таблицы, куда будут вноситься данные
"""
with open(f'north_data/{from_file}') as file:
csv_file = csv.reader(file)
next(csv_file)
for i in csv_file:
val = i[0], i[1], i[2]
if table_name.lower() == 'orders' or table_name == 'employees':
print(f'Добавляем в таблицу {table_name} - {i}')
self.cursor.execute(f'INSERT INTO {table_name.lower()} '
f'VALUES {i[0], i[1], i[2], i[3], i[4]}')
elif table_name.lower() == 'customers':
print(f'Добавляем в таблицу Customers {i}')
self.cursor.execute(f'INSERT INTO customers(customer_id, customer_title, customer_contact) '
f'VALUES(%s, %s, %s)', (val))
else:
raise Exception(f'Такой таблицы не существует.')
db = data_base('North', '5772')
db.table_insert('employees_data.csv', 'employees')
SQL
CREATE table employees
(
emp_first_name varchar(100) NOT NULL,
emp_last_name varchar(100) NOT NULL,
emp_title varchar(100) NOT NULL,
emp_birtday varchar(30) NOT NULL,
notes varchar (999)
);
CREATE table orders
(
order_id int PRIMARY KEY,
order_customer varchar(50) NOT NULL,
order_emp_id int NOT NULL,
order_date varchar(30) NOT NULL,
order_destination varchar(150) NOT NULL
);
CREATE table customers
(
customer_id varchar(20) NOT NULL,
customer_name varchar(100) NOT NULL,
customer_contact varchar(50) NOT NULL,
)