nak*_*k3c 4 python django python-3.x psql docker
我正在使用 Django 3(在 docker 容器中)使用 postgres sql 作为后端开发一个网站;即在项目设置文件中我有:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432
}
}
Run Code Online (Sandbox Code Playgroud)
我已经填充了后端数据库,并且可以使用管理员浏览数据。但是,我想通过命令行连接到数据库,以便我可以更轻松地测试查询。我尝试从命令行以正常方式连接到数据库:
sudo -u postgres psql
postgres=# \c postgres
Run Code Online (Sandbox Code Playgroud)
问题是没有找到数据:
postgres=# \dt
Did not find any relations.
Run Code Online (Sandbox Code Playgroud)
由于我是 docker 的新手,我想也尝试连接其他方式;具体来说,基于我尝试过的另一篇文章:
sudo docker run -d -p 5432 -t postgres/postgresql /bin/su postgres -c '/usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf'
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
pull access denied for psql/postgresql, repository does not exist or may require 'docker login'
Run Code Online (Sandbox Code Playgroud)
同样,我想通过命令行连接到数据库,以便我可以更轻松地测试查询。也许我走在正确的道路上,但我们将不胜感激。
使用数据库名称是一个坏主意,因为PostgreSQL 本身默认postgres有一个用于维护的数据库。postgres我建议像这样调用数据库my_project,然后创建一个服务帐户 user my_project_user,并分配一个密码:
sudo -u postgres psql
postgres=# CREATE USER my_project_user WITH PASSWORD 'blahblah';
postgres=# CREATE DATABASE my_project WITH OWNER my_project_user;
postgres=# \q
Run Code Online (Sandbox Code Playgroud)
相应地更新您的 DjangoDATABASES["default"]设置并运行迁移。运行迁移后,您可以使用以下管理命令访问 Django 数据库:
python manage.py dbshell
Run Code Online (Sandbox Code Playgroud)
您也许可以使用当前的设置发出上述命令,但使用postgres数据库名称时可能会遇到问题。祝你好运!
| 归档时间: |
|
| 查看次数: |
3543 次 |
| 最近记录: |