def cleanup_sql_tables(sql_db): for mt, table_list in media_types_tables: session = Session() count = session.query(MediaEntry.media_type). \ filter_by(media_type=unicode(mt)).count() print " %s: %d entries" % (mt, count) if count == 0: print "\tAnalyzing tables" for tab in table_list: cnt2 = session.query(tab).count() print "\t %s: %d entries" % (tab.__tablename__, cnt2) assert cnt2 == 0 print "\tRemoving migration info" mi = session.query(MigrationData).filter_by(name=unicode(mt)).one() session.delete(mi) session.commit() session.close() print "\tDropping tables" tables = [model.__table__ for model in table_list] Base_v0.metadata.drop_all(sql_db.engine, tables=tables) session.close()
def clean_orphan_tags(commit=True): """Search for unused MediaTags and delete them""" q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None) for t in q1: Session.delete(t) # The "let the db do all the work" version: # q1 = Session.query(Tag.id).outerjoin(MediaTag).filter(MediaTag.id==None) # q2 = Session.query(Tag).filter(Tag.id.in_(q1)) # q2.delete(synchronize_session = False) if commit: Session.commit()
def clean_orphan_tags(): q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None) for t in q1: Session.delete(t) # The "let the db do all the work" version: # q1 = Session.query(Tag.id).outerjoin(MediaTag).filter(MediaTag.id==None) # q2 = Session.query(Tag).filter(Tag.id.in_(q1)) # q2.delete(synchronize_session = False) Session.commit()