postgresql 将postgres连接到django时遇到问题

rsaldnfx  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(3)|浏览(190)

根据Django Postgres Documentation的文档,我添加到我的settings.py
在我设置的设置中

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'OPTIONS': {
            'service': 'my_service',
            'passfile': '.my_pgpass',
        },
    }
}

在www.example.com附近settings.py,我创建了pg_service.conf

[my_service]
host=localhost
user=USER
dbname=NAME
port=5432

我创建了mypg_pass

localhost:5432:PostgreSQL 14:postgres:LetMeIn

我很确定我遵循了文档,但在python manage.py检查我得到了以下错误。

connection = Database.connect(**conn_params)
  File "C:\Users\oliver\base\correlator2v2\correlator2home\venv\lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)django.db.utils.OperationalError: definition of service "my_service" not found
ssm49v7z

ssm49v7z1#

在www.example.com旁边settings.py,我创建了pg_service.conf
这不是系统查找的位置,请参见the docs
“默认情况下,每个用户的服务文件名为~/.pg_service. conf。”其中~指的是您的主目录,而不是您的当前目录(当然也不是指'www.example.com所在的同一目录settings.py',因为PostgreSQL甚至不知道该文件是什么)

eivgtgni

eivgtgni2#

它无法找到服务,但实际上一个人根本不需要使用服务...
OP可以简单地

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'NAME', # database name
        'USER': 'USER',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
7cjasjjr

7cjasjjr3#

这是我如何让它在psycopg3.1.9中工作(Django 4.2):

# settings.py

DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.postgresql",
            "OPTIONS": {
                "service": "my_service",
                "passfile": ".my_pgpass",
            },
        }
    }

然后在~上创建.pg_service.conf:

# ~/.pg_service.conf

[my_service]
host=localhost
user=USER
dbname=DBNAME
port=5432

相关问题