def db_add( domain_id, astral_id, astral_sid, domain_start, domain_stop, astral_start, astral_stop, pdb_id, chain, overlap, session=None, ): # Create a domain_to_astral ORM object and push it to the DB. Create a scoped session for push. # Raise exception if push fails # If session not given, create scoped session for the DB push if not session: print "db_add:: No session provided. Creating scoped session" session = ScopedSession() if astral_start == None or astral_stop == None: dtoa_obj = DomainAstralOverlap( domain_id=domain_id, astral_id=astral_id, astral_sid=astral_sid, domain_start=domain_start, domain_stop=domain_stop, pdb_id=pdb_id, chain=chain, overlap=overlap, ) else: dtoa_obj = DomainAstralOverlap( domain_id=domain_id, astral_id=astral_id, astral_sid=astral_sid, domain_start=domain_start, domain_stop=domain_stop, astral_start=int(astral_start), astral_stop=int(astral_stop), pdb_id=pdb_id, chain=chain, overlap=overlap, ) session.add(dtoa_obj) try: session.flush() except IntegrityError: print "DomainToAstral {0} object already in database. Skipping".format(dtoa_obj) session.rollback() except Exception as e: print "Error in pushing DomainToAstral object {0} to database".format(dtoa_obj) raise return dtoa_obj
def output_db(list): # Takes a list of HomologComparisonProteinPair objects to store in the DB, # table hpf.homolog_structure_allvall[...] session = ScopedSession() for pair in list: hsa_obj = HomologStructAllVAll(source_id=pair.source.query_id, target_id=pair.target.query_id, score=pair.similarity) session.add(hsa_obj) try: session.flush() except IntegrityError: print "Object {0} already in database. Rolling back and skipping..".format(hsa_obj) session.rollback() continue except: print "Could not add protein comparison object {0} to DB".format(hsa_obj) raise