On 9/18/15 7:43 PM, Sergi Pons Freixes wrote:
Hi everybody,
I am experiencing the same issue commented
here: https://bitbucket.org/zzzeek/alembic/issues/293/alembic-autogenerate-creates-endless
In my case, I have the model:
-----------8<--------------
...
class EmailAttachment(Base):
__tablename__ = 'email_attachment'
__table_args__ = table_args
email_message_id = Column(ForeignKey(EmailMessage.id), nullable=False)
filestorage_file_id = Column(Integer, nullable=False)
email_message = relationship(EmailMessage, backref='email_attachments')
def __init__(self, email_message_id=None, email_message=None,
filestorage_file_id=None, fxt=None):
self.email_message_id = email_message_id
self.email_message = email_message
self.filestorage_file_id = filestorage_file_id
self.fxt = fxt
...
-----------8<--------------
Where:
-----------8<--------------
...
table_args = {'schema': 'notifications'}
class NotificationsBase:
@declared_attr
def id(cls):
return Column(Integer, primary_key=True)
@declared_attr
def fxt(cls):
return Column(String, nullable=True)
@classmethod
def get_one(cls, **kwargs):
query = DBSession.query(cls)
for k, v in kwargs.items():
query = query.filter(getattr(cls, k) == v)
return query.one()
def __repr__(self):
return "<%s id=%s>" % (self.__class__.__name__, self.id)
Base = declarative_base(cls=NotificationsBase)
...
-----------8<--------------
Running 'alembic -c development.ini revision -m "upgrade"
--autogenerate' without any change to the model, alembic insists on
dropping the foreign key and recreating it afterwards. It is happening
to all the foreign keys of all the models of the project. The
generated script looks like:
-----------8<--------------
...
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_constraint('email_attachment_email_message_id_fkey',
'email_attachment', type_='foreignkey')
op.create_foreign_key(None, 'email_attachment', 'email_message',
['email_message_id'], ['id'], source_schema='notifications',
referent_schema='notifications')
...
-----------8<--------------
For more information, my env.py has:
-----------8<--------------
...
target_metadata = Base.metadata
def include_symbol(tablename, schema):
return schema == table_args['schema']
...
def run_migrations_online():
connection = engine.connect()
context.configure(
connection=connection,
target_metadata=target_metadata,
include_schemas=True,
include_symbol=include_symbol,
version_table_schema='public'
)
try:
with context.begin_transaction():
context.run_migrations()
finally:
connection.close()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
-----------8<--------------
And all this with SQLAlchemy 1.0.8, Alembic 0.8.2 and PostgreSQL
9.3.7. Any clue of what could be the source of the problem?
what is your search_path set to ? see
http://docs.sqlalchemy.org/en/rel_1_0/dialects/postgresql.html#remote-schema-table-introspection-and-postgresql-search-path
for background on this. It is highly recommended that search_path
remain set on "public" and that you do *not* refer to the "public" name
directly in any table definitions. Feel free to share a model that
includes all the tables and constraints in question as well.
Cheers,
Sergi
--
You received this message because you are subscribed to the Google
Groups "sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sqlalchemy-alembic+unsubscr...@googlegroups.com
<mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sqlalchemy-alembic+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.