2015-10-19 38 views
-1

我一直在關注由Miguel Ginberg編寫的Flask書,我正在考慮如何部署我的應用程序並使用PostgresDB。Flask Postgres Heroku

在我的本地生產配置中,我必須手動進入並運行Role.insert_roles(),才能分配任何角色。

如何在Heroku中使用postgres執行此操作?事實上,你如何連接到PostgreSQL數據庫?在代碼Postgres的接管使用環境變量這是不是真的清楚:

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

我有一種感覺,我的應用程序只是運行SQLite和本書並不是關於如何切換真正明確。

SOLUTION: 如果你已經部署到Heroku上,你沒有改變環境變量:

  • DATABASE_URI到SQLALCHEMY_DATABASE_URI
  • FLASK_CONFIG = Heroku的
  • FLASKY_ADMIN =您的電子郵件

然後跑在你的外殼上:

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

那麼你可能正在從SQLite數據庫運行開發配置!

+0

教程用途[瓶-SQLAlchemy](http://pythonhosted.org/Flask-SQLAlchemy/)。你必須改變'SQLALCHEMY_DATABASE_URI'指向你的Postgres數據庫。 – dirn

+0

好吧,當數據庫設置正確時,你能在生產環境中運行python shell嗎?除非您將角色寫入數據庫,否則基於您的電子郵件地址的環境變量的管理員帳戶未正確配置。 'python manage.py shell',然後'role.create_all()'。你如何在heroku中做到這一點? – charlestondance

回答

0

如果你想手動連接,你可以直接使用http://initd.org/psycopg/ libarary。 Flask-SQLAlchemy提供在引擎蓋下面使用psycopg,請參閱here - 在您的示例中,繼續使用SQLAlchemy可能更容易。更多信息here

+0

燒瓶教程爲Flask-SQL鍊金術對象提供了一個命令行選項。需要在該shell中爲每個數據庫運行Role.insert_roles()以將用戶角色寫入表中。這本書沒有解釋如何在heroku中完成這件事。 – charlestondance

0

我有同樣的問題和解決類似如下:
1.供應分貝
$:Heroku的插件:創建Heroku的-PostgreSQL的鮑比-dev的
......
添加database_url:
$:英雄配置-s | grep的Heroku的-PSOTGRESQL
(然後顯示HEROKU_POSTGRESQL_RED_URL = .....)
$:Heroku的PG:促進的Heroku-POSTGRESQL-RED

  • 安裝此extention:psycopg2
  • 3.change的config.py:
    配置= {
    .....
    '缺省':ProductionConfig
    }