【问题标题】:Cannot connect to the postgresql database locally using python and heroku postgres无法使用 python 和 heroku postgres 在本地连接到 postgresql 数据库
【发布时间】:2021-09-25 23:17:35
【问题描述】:

我是第一次使用 heroku postgres。一切都按照tutorial做,特别是这个:

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 上启动时它连接良好。

【问题讨论】:

  • 此问题stackoverflow.com/questions/39004608/… 的可能重复项。看看答案是否突然对你有所帮助,以防你不发表评论。
  • 我认为调试的一个好方法是在你的 python 代码中打印出 DATABASE_URL ,这样你就可以知道它是否是你期望的值。从堆栈跟踪来看,它看起来没有正确设置

标签: python postgresql heroku heroku-postgres


【解决方案1】:

你可以试试这个吗?

set DATABASE_URL=postgres://%USERNAME%

不幸的是,在 Windows 命令提示符中没有内置的方法来执行命令替换。 $(...) 仅在 UNIX shell 中可用。

您还可以看到以下帖子:

【讨论】:

  • 感谢您的回答。试过这个,它确实用我的用户名替换了表达式,但是无论我在那里注入什么,我仍然会得到同样的错误,除非我从 heroku postgres 数据库凭据中复制 url 以进行手动连接,但是这些会定期更改,所以它不是很方便的解决方案.虽然在 heroku 上启动时连接良好。
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 2013-04-19
  • 2013-04-21
  • 2021-07-10
  • 1970-01-01
  • 2020-05-30
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多