如何连接 Python 到 Heroku Postgres 数据库? #Error 没有加密
How to Connect Python to Heroku Postgres Database? #Error no encryption
我正在尝试建立与 Heroku Postgres 数据库的连接并收到此错误:
psycopg2.OperationalError:
FATAL: password authentication failed for user "hdyarfoicbluoo"
FATAL: no pg_hba.conf entry for host "95.92.208.27", user "hdyarfoicbluoo", database "d7jcaupbs6m4ud", no encryption
我的代码是:
import psycopg2
conn = psycopg2.connect( dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
conn.close()
期待得到答复。
我尝试使用 DATABASE_URL
但也不起作用:
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
Traceback (most recent call last): File "/home/aluno-di/Desktop/dbaccess.py", line 9, in <module>
DATABASE_URL = os.environ['postgres://hdyarfoicbluoo:xxxx@ec2-63-32-248-14.eu-west-1.compute.amazonaws.com:5432/d7jcaupbs6m4ud'] File "/usr/lib/python3.8/os.py", line 675, in __getitem__ raise KeyError(key) from None KeyError: 'postgres://hdyarfoicbluoo:xxxxx@ec2-63-32-248-14.eu-west-1.compute.amazonaws.com:5432/d7jcaupbs6m4ud'
在第一种情况下,您缺少 sslmode
参数:
conn = psycopg2.connect(
dbname=DB_NAME,
user=DB_USER,
password=DB_PASS,
host=DB_HOST,
sslmode="require", # <-- Here
)
但是最好使用 DATABASE_URL
环境变量,就像您在第二个示例中尝试做的那样。 Heroku 可能随时更改您的数据库凭据,始终使用此变量是确保您的应用程序继续工作的最佳方式。
将连接字符串存储在环境变量中的全部意义在于,您不必将它们直接放入代码中。使用环境变量的 name 检索其值。
像这样的东西应该可以工作:
DATABASE_URL = os.environ["DATABASE_URL"]
conn = psycopg2.connect(DATABASE_URL)
我正在尝试建立与 Heroku Postgres 数据库的连接并收到此错误:
psycopg2.OperationalError:
FATAL: password authentication failed for user "hdyarfoicbluoo"
FATAL: no pg_hba.conf entry for host "95.92.208.27", user "hdyarfoicbluoo", database "d7jcaupbs6m4ud", no encryption
我的代码是:
import psycopg2
conn = psycopg2.connect( dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
conn.close()
期待得到答复。
我尝试使用 DATABASE_URL
但也不起作用:
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
Traceback (most recent call last): File "/home/aluno-di/Desktop/dbaccess.py", line 9, in <module>
DATABASE_URL = os.environ['postgres://hdyarfoicbluoo:xxxx@ec2-63-32-248-14.eu-west-1.compute.amazonaws.com:5432/d7jcaupbs6m4ud'] File "/usr/lib/python3.8/os.py", line 675, in __getitem__ raise KeyError(key) from None KeyError: 'postgres://hdyarfoicbluoo:xxxxx@ec2-63-32-248-14.eu-west-1.compute.amazonaws.com:5432/d7jcaupbs6m4ud'
在第一种情况下,您缺少 sslmode
参数:
conn = psycopg2.connect(
dbname=DB_NAME,
user=DB_USER,
password=DB_PASS,
host=DB_HOST,
sslmode="require", # <-- Here
)
但是最好使用 DATABASE_URL
环境变量,就像您在第二个示例中尝试做的那样。 Heroku 可能随时更改您的数据库凭据,始终使用此变量是确保您的应用程序继续工作的最佳方式。
将连接字符串存储在环境变量中的全部意义在于,您不必将它们直接放入代码中。使用环境变量的 name 检索其值。
像这样的东西应该可以工作:
DATABASE_URL = os.environ["DATABASE_URL"]
conn = psycopg2.connect(DATABASE_URL)