【问题标题】:Heroku /Flask/Postgres: Can not connect to serverHeroku /Flask/Postgres:无法连接到服务器
【发布时间】:2014-07-05 11:43:11
【问题描述】:

我是 flask/Heroku 的新手,并且使用 postgres/sqlalchemy 部署应用程序。我正在使用烧瓶迁移(基于 alembic)进行数据库迁移。即使从工头开始,Everythign 在本地也能正常工作,但我无法在 Heroku 服务器上运行。我相信这与数据库连接和 Flask-migrate 有关,但我不确定。在这里待了几个小时,并且搜索了 SO 无济于事。我知道我犯了一个愚蠢的错误。

安装 Heroku Postgres 前的错误 -

OperationalError: Could not connect to server: Connection refused  Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?

安装 Heroku Postgres 后出错 -

2014-05-16T21:26:14.408879+00:00 app[web.1]:    Is the server running on host "localhost" (127.0.0.1) and accepting
2014-05-16T21:26:14.408880+00:00 app[web.1]:    TCP/IP connections on port 5432?

这是我的项目结构

myproject/
    -app
        -__init__.py
        -forms.py
        -helper.py
        -views.py
        -models.py
        -static/
        -templates/
     -config.py
     -run.py
     -Procfile
     -requirements.txt
     -migrations/

这是我的 init.py:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.script import Manager, Server
from flask.ext.migrate import Migrate, MigrateCommand

from flask.ext.admin import Admin

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
admin = Admin(app)

migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

from app import views, models, forms, helper

这是我的 config.py 文件:

import os

DEBUG = True

basedir = os.path.abspath(os.path.dirname(__file__))

CSRF_ENABLED = True
CSRF_SESSION_KEY = '**********'

ADMINS = frozenset(['myemail'])
SECRET_KEY = '*******'

if os.environ.get('DATABSE_URL') is None:
    SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://******@localhost/myproject'
else:
    SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']

运行.py

#!/usr/bin/env python
from app import manager
manager.run()

Procfile 最后但并非最不重要:

web: gunicorn app:app

【问题讨论】:

    标签: python postgresql heroku flask


    【解决方案1】:

    你在选择数据库 url 时有错别字:

    if os.environ.get('DATABSE_URL') is None:
    

    而不是

    if os.environ.get('DATABASE_URL') is None:
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2012-11-04
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2017-03-24
      • 2015-06-20
      • 2018-03-09
      相关资源
      最近更新 更多