Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 370
john Avatar asked Jul 27 '14 21:07

john


1 Answers

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

like image 163
Lynch Avatar answered Oct 15 '22 05:10

Lynch