Skip to content
Advertisement

check if .one() is empty sqlAlchemy

I am running a query based off of other ids for the query. The problem i have is that sometimes the query won’t find a result. Instead of having the entire program crash, how can I check to see if the result will be None?

This is the query I have:

sub_report_id = DBSession.query(TSubReport.ixSubReport).filter(and_(TSubReport.ixSection==sectionID[0], TSubReport.ixReport== reportID[0])).one()

When the code gets executed and no results are found, I get a NoResultFound exception

NoResultFound: No row was found for one()

is there a way to just skip the query if there is not going to be a result?

Found the solution on SO(couldn’t find it before) Getting first row from sqlalchemy

Advertisement

Answer

Use first() function instead of one(). It will return None if there is no results.

sub_report_id = DBSession.query(TSubReport.ixSubReport).filter(and_(TSubReport.ixSection==sectionID[0], TSubReport.ixReport== reportID[0])).first()

see documentation here

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement