27 lines
879 B
Python
27 lines
879 B
Python
### Database Funcs ###
|
|
import logging
|
|
from typing import AsyncContextManager
|
|
import pandas as pd
|
|
|
|
|
|
async def insert_df_to_mysql(
|
|
table_name: str,
|
|
params: dict | list | pd.DataFrame,
|
|
CON: AsyncContextManager,
|
|
engine: str = 'mysql', # mysql | duckdb
|
|
) -> None:
|
|
if CON is None:
|
|
logging.info("NO DB CONNECTION, SKIPPING Insert Statements")
|
|
else:
|
|
if engine == 'mysql':
|
|
if not isinstance(params, pd.DataFrame):
|
|
if isinstance(params, dict):
|
|
params = [params]
|
|
df = pd.DataFrame(params)
|
|
|
|
await CON.run_sync(
|
|
lambda sync_conn: df.to_sql(name=table_name, con=sync_conn, if_exists='append', index=False)
|
|
)
|
|
await CON.commit()
|
|
else:
|
|
raise ValueError('Only MySQL engine is implemented') |