Как я могу быстро и асинхронно загрузить фрейм данных pandas в базу данных PostGreSQL с помощью SQL Alchemy?Python

Программы на Python
Anonymous
Как я могу быстро и асинхронно загрузить фрейм данных pandas в базу данных PostGreSQL с помощью SQL Alchemy?

Сообщение Anonymous »

Мой фрейм данных имеет ту же структуру, что и таблица в БД. До сих пор я использовал эту функцию для этой задачи:

Код: Выделить всё

async def upload_table_to_postgres_db(
session: AsyncSession, data: pd.DataFrame, table_name: str
) -> None:
"""Uploads data to postgresDB."""
conn = await session.connection()
await conn.run_sync(
lambda sync_conn, data=data: data.to_sql(
name=table_name,
con=sync_conn,
if_exists="append",
index=False,
chunksize=CHUNK_SIZE,
method=postgres_upsert,
),
)
await session.commit()
Проблема с этой функцией заключается в том, что ей требуется соединение для синхронизации для pandas.DataFrame.to_sql(). Мне приходится управлять довольно большими загрузками, и эта функция блокирует мой API во время загрузки, чему я хочу помешать. Если решение состоит в том, чтобы вручную разбить фрейм данных на фрагменты и записать SQL в SQLAlchemy.text, пусть будет так. Кто-нибудь знает хорошее решение этой проблемы? Еще было бы очень хорошо, если бы я мог отправлять все фрагменты «сразу» и позволить API управлять порядком.

Подробнее здесь: https://stackoverflow.com/questions/787 ... postgresql

Вернуться в «Python»