mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-22 00:04:01 +02:00
Added a frist rollback function on a pending Rollback error. (#346)
Possible fix for #341. Rolls back stuck SQL sessions. This only helps against the symptomps not the cause.
This commit is contained in:
@ -4,14 +4,13 @@ import pandas as pd
|
||||
import sqlalchemy as sa
|
||||
from cachetools import TTLCache, cached
|
||||
from loguru import logger
|
||||
from sqlalchemy.engine import Engine
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from aki_prj23_transparenzregister.utils.sql import entities
|
||||
|
||||
|
||||
def get_company_data(session: Session) -> pd.DataFrame:
|
||||
"""Creates a session to the database and get's all available company data.
|
||||
"""Creates a session to the database and collects all available company data.
|
||||
|
||||
Args:
|
||||
session: A session connecting to the database.
|
||||
@ -23,14 +22,14 @@ def get_company_data(session: Session) -> pd.DataFrame:
|
||||
entities.DistrictCourt
|
||||
)
|
||||
engine = session.bind
|
||||
if not isinstance(engine, Engine):
|
||||
if not isinstance(engine, sa.engine.Engine):
|
||||
raise TypeError
|
||||
|
||||
return pd.read_sql(str(query_company), engine, index_col="company_id")
|
||||
|
||||
|
||||
def get_person_data(session: Session) -> pd.DataFrame:
|
||||
"""Creates a session to the database and get's all available company data.
|
||||
"""Creates a session to the database and collects all available company data.
|
||||
|
||||
Args:
|
||||
session: A session connecting to the database.
|
||||
@ -40,7 +39,7 @@ def get_person_data(session: Session) -> pd.DataFrame:
|
||||
"""
|
||||
query_person = session.query(entities.Person)
|
||||
engine = session.bind
|
||||
if not isinstance(engine, Engine):
|
||||
if not isinstance(engine, sa.engine.Engine):
|
||||
raise TypeError
|
||||
|
||||
return pd.read_sql(str(query_person), engine, index_col="person_id")
|
||||
@ -60,7 +59,7 @@ def get_finance_data(session: Session) -> pd.DataFrame:
|
||||
).join(entities.Company)
|
||||
|
||||
engine = session.bind
|
||||
if not isinstance(engine, Engine):
|
||||
if not isinstance(engine, sa.engine.Engine):
|
||||
raise TypeError
|
||||
|
||||
return pd.read_sql(str(query_finance), engine)
|
||||
@ -85,9 +84,12 @@ def get_finance_data_of_one_company(session: Session, company_id: int) -> pd.Dat
|
||||
logger.warning("SQL rollback after operational Error!")
|
||||
session.rollback()
|
||||
annual_finance_data = query.all()
|
||||
|
||||
except sa.exc.PendingRollbackError:
|
||||
logger.warning("SQL rollback when demanded!")
|
||||
session.rollback()
|
||||
annual_finance_data = query.all()
|
||||
engine = session.bind
|
||||
if not isinstance(engine, Engine):
|
||||
if not isinstance(engine, sa.engine.Engine):
|
||||
raise TypeError
|
||||
|
||||
data = [row.__dict__ for row in annual_finance_data]
|
||||
|
Reference in New Issue
Block a user