Using modules and imports makes it much more modular and managable. There are no 600 row files now
76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
import sqlalchemy, os, asyncio
|
|
from sqlalchemy.ext.asyncio import create_async_engine
|
|
from typing import Annotated, Final
|
|
from dataclasses import asdict
|
|
from models.idracModel import snmpPyIDRACData
|
|
from models.sqlTable import idracMeasurement
|
|
|
|
# SQL ENV-------------------------------------------
|
|
USESQL: Final[int] = int(os.getenv("USESQL", 0))
|
|
if USESQL:
|
|
DBENGINE: Final[str] = os.getenv("DBENGINE", "mysql+asyncmy")
|
|
DBADDR: Final[str] = os.getenv("DBADDR", "127.0.0.1")
|
|
DBUSR: Final[str] = os.getenv("DBUSR", "root")
|
|
DBPWD: Final[str] = os.getenv("DBPWD", "6767")
|
|
DBNAME: Final[str] = os.getenv("DBNAME", "TEMP_SENSR")
|
|
|
|
|
|
# SQL
|
|
if USESQL:
|
|
engine = create_async_engine(
|
|
f"{DBENGINE}://{DBUSR}:{DBPWD}@{DBADDR}/{DBNAME}",
|
|
# pool_pre_ping=True, # Check connection liveness before using and if needed, recconect
|
|
# pool_recycle=3600, # recycle connections older than N (3600 in this case) seconds
|
|
echo=True,
|
|
)
|
|
else:
|
|
engine = None
|
|
|
|
|
|
async def sqlIDRACDataWriter(
|
|
inpDict: dict
|
|
) -> int:
|
|
|
|
# inputQueue have multiple such Dicts
|
|
# {
|
|
# "source": "IDRAC",
|
|
# "value": returnObj,
|
|
# "type": "snmpPyIDRACData"
|
|
# }
|
|
if engine is None:
|
|
return 3
|
|
try:
|
|
async with engine.begin() as eng:
|
|
match inpDict["source"]:
|
|
|
|
case "CISCO":
|
|
await eng.execute(
|
|
# changeMeLater
|
|
t1.insert(), [{"name": "some name 1"}, {"name": "some name 2"}]
|
|
)
|
|
case "IDRAC":
|
|
payload = inpDict["value"] # snmpPyIDRACData
|
|
row = asdict(payload)
|
|
|
|
await eng.execute(
|
|
idracMeasurement.insert(),
|
|
[row]
|
|
)
|
|
return 0
|
|
case "FANS":
|
|
await eng.execute(
|
|
# changeMeLater
|
|
t1.insert(), [{"name": "some name 1"}, {"name": "some name 2"}]
|
|
)
|
|
|
|
case _:
|
|
print(f"No such source of data as {inpDict['source']}")
|
|
return 1
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
return 2
|
|
|
|
return 0
|
|
|
|
# asyncio.sleep(5) |