如何使用psycopg2将我的烧瓶应用程序连接到其heroku数据库?

时间:2017-07-19 00:29:46

标签: postgresql heroku flask

我正在尝试将使用Flask制作的测试应用程序部署到Heroku。我无法弄清楚将我的应用程序连接到heroku postgresql数据库资源的代码应该是什么样子。这是我的代码在我的本地机器上正常运行。

import os, psycopg2, psycopg2.extras
from flask import Flask, request, session, g, redirect, url_for, 
    abort, render_template, flash

app = Flask(__name__)
app.config.from_object(__name__)

app.config.update(dict(
    SECRET_KEY='development key',
    USERNAME='admin',
    PASSWORD='default'
))

def connect_db():
    """Connects to the specific database."""
    rv = psycopg2.connect(database='database_name', user='username')
    return rv

psycopg2.connect()括号中有什么内容?该应用程序在本地运行正常,但在部署的应用程序上,每当我单击需要数据库查询的链接时,我都会收到内部服务器错误。

1 个答案:

答案 0 :(得分:1)

你最好使用像SqlAlchemy这样的ORM并使用os.env.get(url =,default =)获取Heroku数据库连接环境变量,这样你也可以为你的本地数据库设置默认属性。当部署时将使用Heroku ENV的连接,当本地将使用本地连接(默认的)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os


app = Flask(__name__)
DATABASE_DEFAULT = 'postgresql://postgres:password@localhost:5432/mydatabase'
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', DATABASE_DEFAULT)
db = SQLAlchemy(app)
相关问题