无法访问Heroku应用程序上的Postgres数据库

时间:2014-09-07 04:59:37

标签: python postgresql heroku flask heroku-postgres

我在Heroku上运行了一个Python 2.7 / Flask应用程序来擦除数据,现在我想将这些信息存储在数据库中。

我试过按照教程like this one并将其应用到我的案例中,但我无法让它工作。   我创造了&在heroku上成功地推广了我的postgres数据库。

我是Python项目架构的新手,我怀疑我的设置中存在一个简单的问题。

这是我的项目结构

/myapplication
    Procfile
    run.py
    requirements.txt
    /app
        __init__.py
        mechanize_boilerplate.py
        views.py
        /static
        /templates

这是我的 init .py

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
# DB Configuration
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('postgres://{link I got from heroku}')
db = SQLAlchemy(app)


from app import views

以下是我的views.py

的一部分
from app import app
import mechanize_boilerplate
import os
from flask import Flask, render_template, request
from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    email = db.Column(db.String(120), unique=True)

    def __init__(self, name, email):
        self.name = name
        self.email = email

    def __repr__(self):
        return '<Name %r>' % self.name

@app.route('/db')
def dbtest():
    try:
        user = User('John', 'Foo@bar.com')
        db.session.add(user)
        db.session.commit()
    except:
        print 'DB error'
    return 'done'

基本上当我访问myapp / db时,我想创建一个包含id,name和email的记录(john,foo @ bar.com)。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

应为os.environ.get('DATABASE_URL')

答案 1 :(得分:2)

将其替换为日志错误消息:

@app.route('/db')
def dbtest():
try:
    user = User('John', 'Foo@bar.com')
    db.session.add(user)
    db.session.commit()
except Exception as e:
    f = open('/tmp/error.log', 'w')
    f.write(e.message)
    f.close()
return 'done'

发布您的错误消息。

答案 2 :(得分:0)

未提及的另一个解决方案是使用 dj_database_url

import dj_database_url

DATABASES['default'] =  dj_database_url.config()