python - 无法使用 python 和 heroku postgres 在本地连接到 postgresql 数据库
问题描述
我第一次使用heroku postgres。根据教程做了一切,尤其是这个:
set DATABASE_URL=postgres://$(whoami)
Python:
DATABASE_URL = os.environ['DATABASE_URL']
connection = psycopg2.connect(DATABASE_URL, sslmode='require')
cursor = connection.cursor()
这是我尝试连接到数据库时收到的错误消息:
(myenv) C:\deployment\myenv\remastered>heroku local
20:46:58 worker.1 | Traceback (most recent call last):
20:46:58 worker.1 | File "db.py", line 6, in <module>
20:46:58 worker.1 | connection = psycopg2.connect(DATABASE_URL, sslmode='require')
20:46:58 worker.1 | File "C:\deployment\myenv\lib\site-packages\psycopg2\__init__.py", line 122, in connect
20:46:58 worker.1 | conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
20:46:58 worker.1 | psycopg2.OperationalError: could not translate host name "$(whoami)" to address: Unknown server error
[DONE] Killing all processes with signal SIGINT
20:46:58 worker.1 Exited with exit code null
似乎由于某种原因,它无法将“$(whoami)”表达式转换为数据库 url。
我该如何解决?
那应该只在heroku上运行应用程序时才有效吗?在本地运行时,我应该手动指定 url?
无论我在那里注入什么而不是 $(whoami) 都会得到相同的错误,除非我从 heroku postgres 数据库凭据中复制 url 以进行手动连接,但是这些会定期更改,因此这不是很方便的解决方案。虽然在heroku上启动时连接良好。
解决方案
你能试试这个吗?
set DATABASE_URL=postgres://%USERNAME%
不幸的是,在 Windows 命令提示符中没有内置的方法来执行命令替换。 $(...)
仅在 UNIX shell 中可用。
您还可以查看以下帖子:
推荐阅读
- php - PHP Laravel API - 如何限制对多个受信任主机的请求?
- scala - Scala yield 返回一个 Future
- python - Python 类 DRY
- javascript - d3 中的负对数和零对数值
- c - C#error 宏可以显示多行消息吗?
- angular - Angular 中的 Observable 返回 [ Object object ]
- python - 允许使用 Django 和 Meraki Captive Portal API 自动重定向浏览器
- node.js - Node.js 如何同时异步和单线程?
- android - 在播放其他声音时尝试限制其他声音
- chart.js - 如何在 y 轴上突出显示时间序列的最后一个值