feedhandlers extended
This commit is contained in:
27
modules/db.py
Normal file
27
modules/db.py
Normal file
@@ -0,0 +1,27 @@
|
||||
### 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')
|
||||
Reference in New Issue
Block a user