我是一个db傻瓜,我正在为我的django项目设置PostgreSQL.为此,我还使用了psycopg2.不过,数据库很复杂.就我个人而言,我想知道是否有办法在一个地方获得我所有的数据库和用户设置/信息.所以我知道连接到什么以及如何连接(我仍在运行local,所以没有安全问题?).

然而,我似乎没有创建这个数据库的"权限",即使我连接到标准的"管理员"——用户"postgres".用我在安装时输入的密码("pw123").

django-project(settings.py):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',                      
        'USER': 'postgres',
        'PASSWORD': 'pw123',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

CMD -> python manage.py shell (after importing django.db connection)

>>> cursor = connection.cursor()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 165, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 138, in _cursor
    self.ensure_connection()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection
    self.connect()
  File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 122, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Python27\lib\site-packages\django\db\backends\postgresql_psycopg2\base.py", line 134, in get_new_connection
    return Database.connect(**conn_params)
  File "C:\Python27\lib\site-packages\psycopg2-2.5.4-py2.7-win32.egg\psycopg2\__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: FATAL:  database "django" does not exist

我是不是在安装过程中做错了什么?我能改正吗?我应该考虑重新安装所有东西吗?我该怎么做呢?数据库把我搞糊涂了:p

推荐答案

PostgreSQL不会在第一次连接时自动创建数据库.您必须先创建一个数据库,然后才能使用它.

通过PgAdmin-III或命令行psql客户端连接到PostgreSQL(通常连接到管理数据库,名为‘postgres’),并创建数据库django.在PgAdmin-III中,您可以通过菜单执行此操作;从psql中,您可以使用the CREATE DATABASE SQL command.

另请参见手册中的Creating a PostgreSQL database条和我在谷歌上搜索了5秒后找到的this tutorial条,它们看起来并不完全错误.

我要做的是以"postgres"用户的身份使用psql(您可以在"开始"菜单中找到它)连接,使用您在安装时设置的密码,然后:

CREATE USER django WITH PASSWORD 'somepassword';

CREATE DATABASE django WITH OWNER django ENCODING 'utf-8';

Database相关问答推荐

TYPO3 OOPS,出现错误!编码:202402180809040864ba5c

有关托管默认 SQL Server 实例的 Azure VM 数据库服务器的问题

优雅地处理 EJB/JPA 环境中的约束冲突?

PostgreSQL 嵌套 INSERTs / WITHs 用于外键插入

无法使用命令行运行 liquibase

将 .frm 和 .opt 文件导入 MySQL

mysql搜索表名的段

Django:如何以线程安全的方式执行 get_or_create()?

FOR UPDATE和JOIN的 SQL 语义

如何产生幻读?

具有多列的单个固定表与灵活的抽象表

SQL Server 2005 是否具有与 MySql 的 ENUM 数据类型等效的数据类型?

你可以在一个 Hibernate Session 中有多个事务吗?

如何在实体框架中使用字符串属性作为主键

SQL 查询 - 如何按 null 或不为 null 进行过滤

Rails 控制台 - 查找在某天创建的位置

LevelDB 支持 java 吗?

在两列之间 Select 最近的日期

获取 xp_cmdshell 的执行权限

自引用表上的 SQL 递归查询 (Oracle)