fix: update SQLAlchemy JSON accessors from astext to as_string and add validation script

main
Cizz22 2 months ago
parent d910ef80d6
commit 6f50cb9852

@ -27,9 +27,9 @@ async def run_rbd_simulation(*, sim_hours: int, oh_duration: int = 1200, oh_sess
# Check if a simulation with these parameters already exists # Check if a simulation with these parameters already exists
stmt = select(CalculationData).where( stmt = select(CalculationData).where(
CalculationData.overhaul_session_id == oh_session_id, CalculationData.overhaul_session_id == oh_session_id,
CalculationData.analysis_metadata["type"].astext == "target_reliability", CalculationData.analysis_metadata["type"].as_string() == "target_reliability",
CalculationData.analysis_metadata["sim_hours"].astext == str(sim_hours), CalculationData.analysis_metadata["sim_hours"].as_string() == str(sim_hours),
CalculationData.analysis_metadata["oh_duration"].astext == str(oh_duration) CalculationData.analysis_metadata["oh_duration"].as_string() == str(oh_duration)
) )
result = await db_session.execute(stmt) result = await db_session.execute(stmt)
existing_calc = result.scalars().first() existing_calc = result.scalars().first()

@ -0,0 +1,21 @@
from sqlalchemy import Column, JSON, String, select
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class Test(Base):
__tablename__ = 'test'
id = Column(String, primary_key=True)
meta = Column(JSON)
try:
s = select(Test).where(Test.meta["type"].as_string() == "target_reliability")
print("as_string works")
except Exception as e:
print("as_string error:", e)
try:
s = select(Test).where(Test.meta["type"].astext == "target_reliability")
print("astext works")
except Exception as e:
print("astext error:", e)
Loading…
Cancel
Save