Ok. I tried your suggestion:
in env.py:
from myapp import how_i_get_my_session
session = how_i_get_my_session()
connection = session.connection
results in:
context.configure(connection=connection, target_metadata=target_metadata)
File "<string>", line 7, in configure
File "/env/lib/python2.7/site-packages/alembic/environment.py", line 664,
in configure
opts=opts
File "//env/lib/python2.7/site-packages/alembic/migration.py", line 141,
in configure
dialect = connection.dialect
AttributeError: 'function' object has no attribute 'dialect'
I tried this:
s = db.get_db_session()
connection = s.bind
context.configure(connection=connection,
target_metadata=target_metadata)
try:
with context.begin_transaction():
context.run_migrations()
finally:
s.remove()
# connection.close()
This seems to work fine. Any problems you foresee with my solution or any
idea why your's throws an error (perhaps I missed something when converting
your suggestion into runnable code)?
On Wednesday, June 4, 2014 12:55:57 PM UTC+10, Michael Bayer wrote:
>
>
> On Jun 3, 2014, at 10:37 PM, gbr <[email protected] <javascript:>>
> wrote:
>
> > I went ahead and made the modification as suggested. Alembic and my
> application are now using the application's database connection and
> sessions.
> >
> > However, the system locks up during a migration when I query for some
> application data which I need for data migration. I use Flask-SqlAlchemy
> and follow the way they described it to be used (and postgres):
> >
> > When I call
> >
> > > session.query(SomeClass)
> >
> > the migration process blocks in engine/default.py in cursor.execute
> (this is as far as I can trace it).
> >
> > > def do_execute(self, cursor, statement, parameters, context=None):
> > > cursor.execute(statement, parameters)
> >
> > This is how I create a connection in env.py (Alembic) now:
> >
> > > engine = get_db().engine
> > > connection = engine.connect()
> >
> > `get_db()` is part of the application. It returns an instance of `db =
> SQLAlchemy(flask_app)`
> >
> > I'm not sure how to debug this any further (I could try to throw out
> Flask-SqlAlchemy and see how it goes, but would like to find an easier way
> first). Any suggestions are appreciated.
>
> well again, part of your system is saying:
>
> conn = engine.connect()
>
> and another part is saying:
>
> sess = Session(engine)
> sess.<do stuff> , which means, engine.connect(), which means, two
> connections concurrently.
>
> A true integration would mean that your env.py would use that same Session
> for connectivity and transactional context:
>
>
> env.py
>
> from myapp import how_i_get_my_session
> session = how_i_get_my_session()
> connection = session.connection
>
>
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.