Выгрузка значений фрейма данных в таблицу PostgreSQL python
У меня есть такой фрейм данных

Я хочу сбросить эти данные в таблицу Postgres, которая имеет внешний ключ поставщика и происхождения, как я могу это сделать, обратите внимание, что вся информация о поставщике и происхождении существует в другом фрейме данных.
Один из способов
import pandas as pd
from io import StringIO
SCHEMA_NAME = "schema_name"
def serialize_dataframe(df: pd.DataFrame, **kwargs) -> StringIO:
kwargs.setdefault("index", False)
kwargs.setdefault("sep", ",")
kwargs.setdefault("quotechar", '"')
kwargs.setdefault("date_format", "%d-%B-%Y")
return StringIO(df.to_csv(**kwargs))
def copy_table(table_name: str, str_buffer: StringIO, conn=None):
str_buffer.seek(0)
header_row = str_buffer.readline().strip()
with conn.cursor() as cur:
cur.execute(f'SET search_path TO "{SCHEMA_NAME}"')
cur.copy_expert(
f"""
COPY "{table_name}" ({header_row}) FROM STDIN WITH
(FORMAT csv, DELIMITER ',', NULL '', HEADER false, QUOTE '"')
""",
str_buffer,
)
def write_df_to_table(input_df: pd.DataFrame, table_name: str):
data_buffer = serialize_dataframe(input_df)
copy_table(table_name, data_buffer)