我是一个db dummy,我正在尝试为我的django项目设置PostgreSQL。为此,我也使用psycopg2。但数据库很复杂。就个人而言,如果有办法在一个地方掌握所有我的数据库和用户设置/信息,我想。所以我知道连接到什么以及如何连接(我仍在本地运行,所以没有安全问题?)。
然而,即使我连接到标准“admin”-user“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(导入django.db连接后)
>>> 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
答案 0 :(得分:14)
PostgreSQL不会在第一次连接时自动创建数据库。您必须先创建数据库才能使用它。
通过PgAdmin-III或命令行psql
客户端连接到PostgreSQL(通常是管理数据库,名为'postgres'),并创建数据库django
。从PgAdmin-III您可以通过菜单完成此操作;来自psql
您使用the CREATE DATABASE
SQL command。
另请参阅手册中的Creating a PostgreSQL database和this tutorial I found in a 5second google search that doesn't look totally wrong。
我要做的是使用psql
(您可以在“开始”菜单中找到)作为“postgres”用户,使用您在安装时设置的密码进行连接,然后:
CREATE USER django WITH PASSWORD 'somepassword';
CREATE DATABASE django WITH OWNER django ENCODING 'utf-8';
答案 1 :(得分:5)
这是因为与SQLite不同,您需要创建数据库,您可以按照本指南https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn#step-seven-configure-postgresql
答案 2 :(得分:0)
您需要做的就是在postgresql中创建名为django的数据库。 默认情况下,用户postgres将拥有数据库django的权限,密码将是用户postgres的密码。
答案 3 :(得分:0)
此处“ NAME”表示用户名,默认情况下为“ postgres”。因此,“ NAME”应该是用户名而不是数据库名。尝试一下就可以了