From f5cdde53777d981b57841e126c4ad32172e254b6 Mon Sep 17 00:00:00 2001 From: Denis Prusakov Date: Thu, 5 Oct 2023 22:27:18 +0300 Subject: [PATCH 1/3] homework1 --- homework-1/create_tables.sql | 25 +++++++++++++++++++++++++ homework-1/main.py | 28 ++++++++++++++++++++++++++++ pyproject.toml | 14 ++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 pyproject.toml diff --git a/homework-1/create_tables.sql b/homework-1/create_tables.sql index 2240c4efb..cc43b728a 100644 --- a/homework-1/create_tables.sql +++ b/homework-1/create_tables.sql @@ -1 +1,26 @@ -- SQL-команды для создания таблиц +CREATE TABLE employees +( + employee_id int PRIMARY KEY, + first_name varchar(100) NOT NULL, + last_name varchar(100) NOT NULL, + title varchar(100) NOT NULL, + birth_date varchar(100) NOT NULL, + notes varchar(500) NOT NULL +); + +CREATE TABLE customers +( + customer_id varchar(10) PRIMARY KEY, + company_name varchar(100) NOT NULL, + contact_name varchar(100) NOT NULL +); + +CREATE TABLE orders +( + order_id int PRIMARY KEY, + customer_id varchar(10) NOT NULL REFERENCES customers(customer_id), + employee_id int NOT NULL REFERENCES employees(employee_id), + order_date varchar(100) NOT NULL, + ship_city varchar(100) NOT NULL +); \ No newline at end of file diff --git a/homework-1/main.py b/homework-1/main.py index 5b5e8ffd4..19afabbed 100644 --- a/homework-1/main.py +++ b/homework-1/main.py @@ -1 +1,29 @@ """Скрипт для заполнения данными таблиц в БД Postgres.""" +import psycopg2 +import csv + +FILE_CUSTOMERS_DATA = 'north_data/customers_data.csv' +FILE_EMPLOYEES_DATA = 'north_data/employees_data.csv' +FILE_ORDERS_DATA = 'north_data/orders_data.csv' + + +def insert_data_to_sql(filename, name_table): + with open(filename, 'r', encoding='UTF-8') as file: + data = csv.DictReader(file) + with psycopg2.connect(host="localhost", database="north", user="denis", password="123456") as conn: + with conn.cursor() as curs: + for row in data: + row_data = [] + values_designation = [] + for key in list(row.keys()): + row_data.append(row[key]) + values_designation.append('%s') + curs.execute(f"INSERT INTO {name_table} VALUES ({', '.join(values_designation)})", tuple(row_data)) + row_data.clear() + values_designation.clear() + conn.close() + + +insert_data_to_sql(FILE_CUSTOMERS_DATA, 'customers') +insert_data_to_sql(FILE_EMPLOYEES_DATA, 'employees') +insert_data_to_sql(FILE_ORDERS_DATA, 'orders') diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..6e93d8793 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[tool.poetry] +name = "postgres-homeworks" +version = "0.1.0" +description = "" +authors = ["Denis Prusakov "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" From 3a0f3d0f092fde74fb3d2f542b4d5391df5fbe77 Mon Sep 17 00:00:00 2001 From: Denis Prusakov Date: Thu, 5 Oct 2023 22:28:57 +0300 Subject: [PATCH 2/3] homework1 --- homework-1/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/homework-1/main.py b/homework-1/main.py index 19afabbed..13ffebacd 100644 --- a/homework-1/main.py +++ b/homework-1/main.py @@ -6,7 +6,6 @@ FILE_EMPLOYEES_DATA = 'north_data/employees_data.csv' FILE_ORDERS_DATA = 'north_data/orders_data.csv' - def insert_data_to_sql(filename, name_table): with open(filename, 'r', encoding='UTF-8') as file: data = csv.DictReader(file) From fd43341a83f4096230a2d96e7ad34026455c6d3a Mon Sep 17 00:00:00 2001 From: Denis Prusakov Date: Thu, 5 Oct 2023 22:29:38 +0300 Subject: [PATCH 3/3] homework1 --- homework-1/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homework-1/main.py b/homework-1/main.py index 13ffebacd..19afabbed 100644 --- a/homework-1/main.py +++ b/homework-1/main.py @@ -6,6 +6,7 @@ FILE_EMPLOYEES_DATA = 'north_data/employees_data.csv' FILE_ORDERS_DATA = 'north_data/orders_data.csv' + def insert_data_to_sql(filename, name_table): with open(filename, 'r', encoding='UTF-8') as file: data = csv.DictReader(file)