我的本地主机上有一个 postgres 数据库,无需密码即可访问
$ psql -d mwt
psql (8.4.12)
Type "help" for help.
mwt=# SELECT * from vatid;
id | requester_vatid |...
-----+-----------------|...
1719 | IT00766780266 |...
我想从 django 访问该数据库。所以我把 DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mwt',
'USER': 'shaoran',
'HOST': 'localhost'
}
}
由于我不需要密码来访问我的测试数据库,因此我没有在设置中提供任何 PASSWORD
值。
$ ./manage.py shell
>>> from polls.models import Vatid
>>> Vatid.objects.all()
connection_factory=connection_factory, async=async)
OperationalError: fe_sendauth: no password supplied
我尝试使用 PASSWORD: ''
但我收到相同的错误消息。我尝试使用 PASSWORD: None
但这也无济于事。
我一直在搜索有关此的 django 文档,但找不到任何有用的东西。是否可以配置 django.db.backends.postgresql_psycopg2
接受空密码?
最佳答案
令人惊讶的是,答案是根本不指定主机。如果你这样做,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mwt',
}
}
然后 psycopg2 将使用 Unix 套接字以与 psql
相同的方式连接。当您指定 HOST
时,psycopg2 将使用 TCP/IP 连接,这需要密码。
关于python - 使用 psycopg2 无密码连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192134/