在heroku/dash中连接到本地postgresql时出现问题
我通过dash/plotly创建了一个小应用程序,并将其部署到heroku。破折号/绘声绘色的局部效果很好。heroku应用程序正确启动,但我无法从本地数据库生成任何数据 使用“heroku logs--tail”命令,我可以看到与数据库的连接被拒绝:在heroku/dash中连接到本地postgresql时出现问题,heroku,plotly-dash,heroku-postgres,Heroku,Plotly Dash,Heroku Postgres,我通过dash/plotly创建了一个小应用程序,并将其部署到heroku。破折号/绘声绘色的局部效果很好。heroku应用程序正确启动,但我无法从本地数据库生成任何数据 使用“heroku logs--tail”命令,我可以看到与数据库的连接被拒绝: sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused Is the server
sqlalchemy.exc.OperationalError: (psycopg2.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?
该计划如下所示:
import dash
import dash_table
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Output, Input, State
import plotly.graph_objects as go
import psycopg2
from sqlalchemy import create_engine
import os
app = dash.Dash(__name__)
server = app.server
DATABASE_URL = os.environ['DATABASE_URI']
db = create_engine(DATABASE_URL)
def get_data():
df = pd.read_sql_query("SELECT * FROM mytable", con=db)
return df.iloc[0][0] #<- just an example
app.layout = (...)
if __name__ == '__main__':
app.run_server(debug=False)
给出错误消息后,感觉这个DATABASE_URI变量使用正确(它识别localhost/port 5432),但是我应该将这个配置变量添加到我的环境(mac OS)中吗?还是我的代码缺少一些声明?我确实在heroku中安装了postgresql插件,但我认为这在这里没有用,因为数据库是本地的
编辑:如果我使用以下命令,我会从日志中得到相同的错误(但这次应用程序甚至不会启动):
DATABASE_URL = os.environ['DATABASE_URI']
db = psycopg2.connect(DATABASE_URL, sslmode='require')
实际上,问题是:不使用heroku posgres附加组件,是否可以在heroku上使用外部本地数据库?从我的搜索结果来看,我不能。
DATABASE_URL = os.environ['DATABASE_URI']
db = psycopg2.connect(DATABASE_URL, sslmode='require')