使用Flask从sqlite到postgres的本地迁移

时间:2018-02-07 16:30:42

标签: python postgresql flask sqlalchemy flask-migrate

enter image description here

我正在尝试扩展基于烧瓶的项目https://github.com/hack4impact/flask-base/tree/master/app

我已经使用flask-migrate为我的本地sqlite db创建了迁移。

我现在需要从本地sqlite db迁移到heroku的postgres。在https://www.quora.com/What-is-the-best-way-to-copy-my-SQLite-database-to-PostgreSQL-so-I-can-deploy-it-to-Heroku之后,我正在尝试设置一个名为'test'的本地postgres数据库(截图)

我设置:

os.environ["TEST_DATABASE_URL"] = "postgresql+psycopg2://127.0.0.1:5432/test"   # REMOVE THIS !!!!!!!!!!

config.py中有一个包含以下内容的测试配置:

class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')

    print('TestingConfig - psgres?')
    print(SQLALCHEMY_DATABASE_URI)

    WTF_CSRF_ENABLED = False

但是,当我使用flask-migrate执行升级时:

$ python manage.py db upgrade


TestingConfig - psgres?
postgresql+psycopg2://127.0.0.1:5432/test

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 78401e355127, empty message

创建一个新的sqlite数据库。显然我没有连接到postgres测试数据库。我怎样才能使这个工作?

2 个答案:

答案 0 :(得分:0)

在这种情况下,最初没有识别环境变量,但是当我重新启动后,他们确实开始工作了。

os.environ["TEST_DATABASE_URL"] = "postgresql://postgres@127.0.0.1:5432/postgres" 

的工作。

答案 1 :(得分:0)

我也在做迁移,我在短文中记录了它:

Migrating form SqlLite to Postgresql in Flask