"""RSS foreign key Bits Revision ID: 3389071120cb Revises: 9d03d8bba40e Create Date: 2017-02-28 05:08:31.446852 """ # revision identifiers, used by Alembic. revision = '3389071120cb' down_revision = '9d03d8bba40e' branch_labels = None depends_on = None # Patch in knowledge of the citext type, so it reflects properly. import citext from sqlalchemy.dialects.postgresql.base import ischema_names ischema_names['citext'] = citext.CIText from sqlalchemy.dialects import postgresql import sqlalchemy as sa import sqlalchemy_utils from alembic import op from flask_sqlalchemy import _SessionSignalEvents import sqlalchemy as sa from sqlalchemy import event from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, Session as BaseSession, relationship from sqlalchemy import Table from sqlalchemy import Column from sqlalchemy import BigInteger from sqlalchemy import Integer from sqlalchemy import Text from sqlalchemy import Float from sqlalchemy import Boolean from sqlalchemy import DateTime from sqlalchemy import ForeignKey from sqlalchemy import PrimaryKeyConstraint from sqlalchemy import UniqueConstraint from sqlalchemy.orm import relationship from sqlalchemy.schema import UniqueConstraint Session = sessionmaker() Base = declarative_base() class RssFeedPost(Base): __tablename__ = 'feed_pages' id = Column(BigInteger, primary_key=True) feed_id = Column(BigInteger, ForeignKey('rss_parser_funcs.id'), index = True, nullable=False) srcname = Column(Text, nullable=False, index=True) class RssFeedEntry(Base): __tablename__ = 'rss_parser_funcs' name = 'rss_parser_funcs' id = Column(BigInteger, primary_key = True, index = True) feed_name = Column(Text, nullable = False, index = True, unique = True) def upgrade(): ### commands auto generated by Alembic - please adjust! ### bind = op.get_bind() sess = Session(bind=bind) # create the teams table and the players.team_id column # RssFeedPost.__table__.create(bind) # RssFeedEntry.__table__.create(bind) name_map = sess.query(RssFeedEntry).all() name_map = {row.feed_name : row.id for row in name_map} feednames = sess.query(RssFeedPost.srcname).group_by(RssFeedPost.srcname).all() for feedname, in feednames: if not feedname in name_map: print(feedname) else: sess.query(RssFeedPost).filter(RssFeedPost.srcname == feedname).update({"feed_id" : name_map[feedname]}) print("Updating for {} -> {}".format(feedname, name_map[feedname])) sess.commit() null_rows = sess.query(RssFeedPost.srcname).filter(RssFeedPost.feed_id == None).all() print(null_rows) op.alter_column('feed_pages', 'feed_id', existing_type=sa.BIGINT(), nullable=False) ### end Alembic commands ### def downgrade(): ### commands auto generated by Alembic - please adjust! ### op.alter_column('feed_pages', 'feed_id', existing_type=sa.BIGINT(), nullable=True) ### end Alembic commands ###