mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-22 07:33:56 +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
|
import sqlalchemy as sa
|
||||||
from cachetools import TTLCache, cached
|
from cachetools import TTLCache, cached
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from sqlalchemy.engine import Engine
|
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from aki_prj23_transparenzregister.utils.sql import entities
|
from aki_prj23_transparenzregister.utils.sql import entities
|
||||||
|
|
||||||
|
|
||||||
def get_company_data(session: Session) -> pd.DataFrame:
|
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:
|
Args:
|
||||||
session: A session connecting to the database.
|
session: A session connecting to the database.
|
||||||
@ -23,14 +22,14 @@ def get_company_data(session: Session) -> pd.DataFrame:
|
|||||||
entities.DistrictCourt
|
entities.DistrictCourt
|
||||||
)
|
)
|
||||||
engine = session.bind
|
engine = session.bind
|
||||||
if not isinstance(engine, Engine):
|
if not isinstance(engine, sa.engine.Engine):
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
return pd.read_sql(str(query_company), engine, index_col="company_id")
|
return pd.read_sql(str(query_company), engine, index_col="company_id")
|
||||||
|
|
||||||
|
|
||||||
def get_person_data(session: Session) -> pd.DataFrame:
|
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:
|
Args:
|
||||||
session: A session connecting to the database.
|
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)
|
query_person = session.query(entities.Person)
|
||||||
engine = session.bind
|
engine = session.bind
|
||||||
if not isinstance(engine, Engine):
|
if not isinstance(engine, sa.engine.Engine):
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
return pd.read_sql(str(query_person), engine, index_col="person_id")
|
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)
|
).join(entities.Company)
|
||||||
|
|
||||||
engine = session.bind
|
engine = session.bind
|
||||||
if not isinstance(engine, Engine):
|
if not isinstance(engine, sa.engine.Engine):
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
return pd.read_sql(str(query_finance), engine)
|
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!")
|
logger.warning("SQL rollback after operational Error!")
|
||||||
session.rollback()
|
session.rollback()
|
||||||
annual_finance_data = query.all()
|
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
|
engine = session.bind
|
||||||
if not isinstance(engine, Engine):
|
if not isinstance(engine, sa.engine.Engine):
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
data = [row.__dict__ for row in annual_finance_data]
|
data = [row.__dict__ for row in annual_finance_data]
|
||||||
|
Reference in New Issue
Block a user