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 check_collection_slug_used(dummy_db, creator_id, slug, ignore_c_id): filt = (Collection.creator == creator_id) \ & (Collection.slug == slug) if ignore_c_id is not None: filt = filt & (Collection.id != ignore_c_id) does_exist = Session.query(Collection.id).filter(filt).first() is not None return does_exist
def check_media_slug_used(dummy_db, uploader_id, slug, ignore_m_id): filt = (MediaEntry.uploader == uploader_id) \ & (MediaEntry.slug == slug) if ignore_m_id is not None: filt = filt & (MediaEntry.id != ignore_m_id) does_exist = Session.query(MediaEntry.id).filter(filt).first() is not None return does_exist
def convert_media_tags(mk_db): session = Session() session.autoflush = False for media in mk_db.MediaEntry.find().sort('created'): print repr(media.title) for otag in media.tags: print " ", repr((otag["slug"], otag["name"])) nslug = session.query(Tag).filter_by(slug=otag["slug"]).first() print " ", repr(nslug) if nslug is None: nslug = Tag(slug=otag["slug"]) session.add(nslug) session.flush() print " ", repr(nslug), nslug.id ntag = MediaTag() ntag.tag = nslug.id ntag.name = otag["name"] ntag.media_entry = obj_id_table[media._id] session.add(ntag) session.commit() 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()
def media_data_init(self, **kwargs): """ Initialize or update the contents of a media entry's media_data row """ session = Session() media_data = session.query(self.media_data_table).filter_by( media_entry=self.id).first() # No media data, so actually add a new one if media_data is None: media_data = self.media_data_table( media_entry=self.id, **kwargs) session.add(media_data) # Update old media data else: for field, value in kwargs.iteritems(): setattr(media_data, field, value)
def media_data(self): session = Session() return session.query(self.media_data_table).filter_by( media_entry=self.id).first()