def get_url(self, source_url, create=False): """Return a database record for a file""" import sqlalchemy.orm.exc s = self.bundle.database.session try: o = s.query(File).filter(File.source_url == source_url).one() except sqlalchemy.orm.exc.NoResultFound: if create: o = File(source_url=source_url, path=source_url, process="none") s.add(o) s.commit() else: return None o.session = s # Files have SavableMixin return o