使Flask在Heroku上使用Postgres

时间:2015-10-19 10:12:26

标签: postgresql heroku flask flask-sqlalchemy

我一直关注Miguel Ginberg撰写的Flask一书,我正在思考如何部署我的应用程序并使用PostgresDB。

在我的本地生产配置中,我必须手动进入并运行Role.insert_roles()才能分配任何角色。

如何使用postgres在Heroku中执行此操作?实际上,你如何连接到postgres数据库?在postgres代码中使用环境变量接管的位置并不是很清楚:

https://github.com/miguelgrinberg/flasky/blob/master/config.py

我有一种感觉我的应用程序只是运行sqlite而且这本书并不清楚如何切换。

解: 如果您已部署到heroku并且尚未更改环境变量:

  • DATABASE_URI到SQLALCHEMY_DATABASE_URI
  • FLASK_CONFIG = heroku
  • FLASKY_ADMIN =您的电子邮件

然后在你的shell中运行:

heroku run python manage.py shell
db.create_all()
db.commit()
Role.insert_roles() 

那么你可能正在从SQLite数据库运行开发配置!

2 个答案:

答案 0 :(得分:0)

如果您想手动连接,可以直接使用http://initd.org/psycopg/图书馆。 Flask-SQLAlchemy在引擎盖下提供了psycopg,请参阅here - 在您的示例中,继续使用SQLAlchemy可能更容易。更多信息here

答案 1 :(得分:0)

我有同样的问题并解决如下:
1.配置数据     $:heroku addons:创建heroku-postgresql bobby-dev
        ......
    添加database_url:
    $:hero config -s | grep HEROKU-PSOTGRESQL
 (然后显示HEROKU_POSTGRESQL_RED_URL = .....)
    $:heroku pg:推广HEROKU-POSTGRESQL-RED

  1. 安装此扩展程序:psycopg2
  2. 3.更改config.py:
    config = {
             .....
             'default':ProductionConfig
             }