Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何使用psycopg2将flask应用程序连接到其heroku数据库?_Postgresql_Heroku_Flask - Fatal编程技术网

Postgresql 如何使用psycopg2将flask应用程序连接到其heroku数据库?

Postgresql 如何使用psycopg2将flask应用程序连接到其heroku数据库?,postgresql,heroku,flask,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(__n

我正在尝试将我用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()括号中是什么?该应用程序在本地运行良好,但在部署的应用程序上,每当我单击需要数据库查询的链接时,就会出现一个内部服务器错误。

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


您是否为heroku PG实例使用了正确的凭据?提醒:您的连接字符串是在
数据库\u URL
环境变量中定义的,您可能需要解析它以获取相关数据(主机名、用户、密码、端口、数据库名),所以rv=psycopg2.connect(数据库\u URL)?我知道如何找到凭据我只是不知道在我的代码中放在哪里,没有人愿意放弃这些信息。
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)