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
获取heroku数据库地址和凭据,而不是数据库URL_Heroku_Heroku Postgres - Fatal编程技术网

获取heroku数据库地址和凭据,而不是数据库URL

获取heroku数据库地址和凭据,而不是数据库URL,heroku,heroku-postgres,Heroku,Heroku Postgres,我正在部署一个应用程序,它要求数据库信息作为单独的参数传递,例如 $ someapp --db-host=example.com --db-port=5433 --db-name=mydb --db-user=me --db-password=mypass 当查看heroku提供的内容时,似乎唯一可用的就是数据库的URL。当然,我可以在Procfile中解析它的值,并提取所有必要的内容,目前我正在考虑类似于小助手脚本的东西,例如parse\u db\u url.py: #/usr/bin/en

我正在部署一个应用程序,它要求数据库信息作为单独的参数传递,例如

$ someapp --db-host=example.com --db-port=5433 --db-name=mydb --db-user=me --db-password=mypass
当查看
heroku
提供的内容时,似乎唯一可用的就是
数据库的URL
。当然,我可以在
Procfile
中解析它的值,并提取所有必要的内容,目前我正在考虑类似于小助手脚本的东西,例如
parse\u db\u url.py

#/usr/bin/env蟒蛇3
导入操作系统
从sqlalchemy.engine.url导入make\u url
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
url=make\u url(os.environ.get('DATABASE\u url'))
env=f''PG_USER={url.username}
PG_PASSWORD={url.PASSWORD}
PG_HOST={url.HOST}
PG_PORT={url.PORT}
PG_DBNAME={url.database}''
印刷品(环境)
并在
程序文件中评估它

web: eval $(python parse_db_url.py) && someapp --db-host=$PG_HOST ...

等等,但这是正确的做法还是我只是忽略了什么?如果这是相关的,我将在免费计划atm上进行测试,但如果对部署感到满意,则转向爱好计划。

您可以添加自己的环境变量来保存配置(在设置->配置变量下)。只需添加它们并将您的Procfile设置为
web:someapp--db host=$PG\u host…
@yonili如果我正确读取了,我就无法在
.env
中保持db连接,因为:您的应用程序的
数据库URL
配置变量的值可能随时都会更改。您不应该在Heroku应用程序内部或外部依赖此值。是的-看起来您是对的。我假设如果你不能更改应用程序本身,你应该像以前那样使用它。没有任何东西可以设置为配置变量,将连接字符串解构为相关部分。一个快速的google似乎表明slqalchemy支持直接连接到
数据库\u URL
。为什么您要手动解析它?@RangerRanger再次尝试手动解析它,因为我需要部署的应用程序不接受数据库URL,而需要单独的数据库连接参数。为此,我使用了
sqlalchemy
,因为我不想自己编写解析。