Tôi đang cố gắng chạy một trang Flask + SQLAlchemy khá đơn giản trên Heroku, nhưng tôi không chắc chắn làm thế nào tôi nên chạy di chuyển của tôi để thiết lập DB của tôi. Khi tôi chạy heroku run alembic upgrade head
, tôi nhận được lỗi sau:Tôi nên chạy di chuyển alembic trên Heroku như thế nào?
Running `alembic upgrade head` attached to terminal... up, run.1
Traceback (most recent call last):
File "/app/.heroku/venv/bin/alembic", line 12, in <module>
load_entry_point('alembic==0.4.0', 'console_scripts', 'alembic')()
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 255, in main
CommandLine(prog=prog).main(argv=argv)
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 250, in main
self.run_cmd(cfg, options)
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 241, in run_cmd
**dict((k, getattr(options, k)) for k in kwarg)
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/command.py", line 124, in upgrade
script.run_env()
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/script.py", line 191, in run_env
util.load_python_file(self.dir, 'env.py')
File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/util.py", line 185, in load_python_file
module = imp.load_source(module_id, path, open(path, 'rb'))
File "alembic/env.py", line 80, in <module>
run_migrations_online()
File "alembic/env.py", line 63, in run_migrations_online
poolclass=pool.NullPool)
File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 349, in engine_from_config
return create_engine(url, **opts)
File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 330, in create_engine
return strategy.create(*args, **kwargs)
File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 64, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py", line 289, in dbapi
Đối với tôi, điều này dường như cho thấy nó đang cố gắng để tải thứ sqlite (đó là mặc định tôi có trong alembic.ini
), nhưng tôi có những điều sau đây trong env.py
của tôi trong nỗ lực sử dụng kết nối Heroku PostgreSQL:
cur_db_uri = config.get_section_option('alembic', 'sqlalchemy.url')
my_db_uri = app.config.get('SQLALCHEMY_DATABASE_URI', cur_db_uri)
config.set_section_option('alembic', 'sqlalchemy.url', my_db_uri)
trong đó app
là trường hợp Flask. Tôi đang sử dụng Flask-SQLAlchemy để DRY lên sử dụng DB của tôi trong ứng dụng, và Flask-Heroku để đảm bảo tất cả các biến cấu hình Flask của tôi đang được kéo đúng từ các biến môi trường Heroku.
Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn. – wheaties
Điều này không hiệu quả đối với tôi, bạn có thể vui lòng giúp tôi, http://stackoverflow.com/questions/17501082/alembic-migrations-for-flask – GangstaGraham