无法访问Heroku应用上的Postgres数据库
我有一个在Heroku上运行的Python 2.7 / Flask应用,它可以抓取数据,现在我想把这些信息存储到数据库里。
我尝试过按照一些教程比如这个来做,但就是无法让它正常工作。我已经在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、名字和邮箱(john, foo@bar.com)。
有什么想法吗?
3 个回答
0
还有一个没有提到的解决方案是使用 dj_database_url。
import dj_database_url
DATABASES['default'] = dj_database_url.config()
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'
把你的错误信息发过来。
3
应该是 os.environ.get('DATABASE_URL')