Как настроить базу данных PostgreSQL в Django

Я новичок в Python и Django.

Я настраиваю проект Django, используя движок базы данных PostgreSQL, но получаю ошибки при каждой операции с базой данных. Например, когда я запускаю manage.py syncdb, я получаю:

C:\xampp\htdocs\djangodir>python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
438, in execute_manager
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
67, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in im
port_module
    __import__(name)
  File "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py"
, line 7, in <module>
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_
signal
  File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 6, in
 <module>
    from django.db import models
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 77, in <modul
e>
    connection = connections[DEFAULT_DB_ALIAS]
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem
__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 33, in load_back
end
    return import_module('.base', backend_name)
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in im
port_module
    __import__(name)
  File "C:\Python27\lib\site-packages\django\db\backends\postgresql\base.py", li
ne 23, in <module>
    raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No mo
dule named psycopg

Может кто-нибудь подсказать мне, что происходит?

Ответ 1

Вам нужно установить psycopg2 библиотеку Python.

Установка


Загрузите http://initd.org/psycopg/, затем установите его в Python PATH

После загрузки легко извлеките архив и:

$ python setup.py install

Или, если хотите, установите его easy_install или pip.

(я предпочитаю использовать pip над easy_install без причины.)

  • $ easy_install psycopg2
  • $ pip install psycopg2

Конфигурация


в настройках.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db_name',                      
        'USER': 'db_user',
        'PASSWORD': 'db_user_password',
        'HOST': '',
        'PORT': 'db_port_number',
    }
}

- Другие инструкции по установке можно найти на странице загрузки и установить страницу.

Ответ 2

Также убедитесь, что установлен пакет разработки PostgreSQL. На Ubuntu вам нужно сделать что-то вроде этого:

$ sudo apt-get install libpq-dev

Ответ 3

Шаг за шагом, что я использую:

 - sudo apt-get install python-dev
 - sudo apt-get install postgresql-server-dev-9.1
 - sudo apt-get install python-psycopg2 - Or sudo pip install psycopg2

Вы можете установить графический инструмент для управления базами данных, для этого вы можете сделать:

sudo apt-get install postgresql pgadmin3 

После этого вы должны изменить пароль пользователя Postgre, затем выполните:

 - sudo su
 - su postgres -c psql postgres
 - ALTER USER postgres WITH PASSWORD 'YourPassWordHere';
 - \q

В вашем файле settings.py вы делаете:

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

Ответ 4

Это может показаться немного длинным, но это сработало для меня без ошибок.

Сначала установите phppgadmin из Ubuntu Software Center.

Затем выполните эти шаги в терминале.

sudo apt-get install libpq-dev python-dev
pip install psycopg2
sudo apt-get install postgresql postgresql-contrib phppgadmin

Запустите сервер Apache

sudo service apache2 start

Теперь запустите это тоже в терминале, чтобы отредактировать файл apache.

sudo gedit /etc/apache2/apache2.conf

Добавьте в открытый файл следующую строку:

Include /etc/apache2/conf.d/phppgadmin

Теперь перезагрузите apache. Используйте терминал.

sudo /etc/init.d/apache2 reload

Теперь вам нужно будет создать новую базу данных. Войдите в систему как пользователь postgres. Продолжить в терминале.

sudo su - postgres

Если у вас возникли проблемы с паролем "postgres", вы можете изменить его с помощью ответа здесь fooobar.com/questions/16236/... и продолжить шаги.

Теперь создайте базу данных

createdb <db_name>

Теперь создайте нового пользователя для входа в phppgadmin позже, предоставив новый пароль.

createuser -P <new_user>

Теперь ваш postgressql настроен, и вы можете перейти к:

http://localhost/phppgadmin/

и войдите в систему с помощью нового пользователя, который вы создали, чтобы просмотреть базу данных.

Ответ 5

Вы можете установить "psycopg" с помощью следующей команды:

# sudo easy_install psycopg2

Кроме того, вы можете использовать pip:

# pip install psycopg2

easy_install и pip включены в ActivePython или вручную установлены из проекты.

Или просто загрузите предустановленный установщик Windows.

Ответ 6

Непосредственная проблема заключается в том, что вам не хватает psycopg.

Ответ 7

Если вы используете Fedora 20, Django 1.6.5, postgresql 9.3. * и вам нужен модуль psycopg2, сделайте следующее:

yum install postgresql-devel
easy_install psycopg2

Если вы похожи на меня, у вас могут возникнуть проблемы с поиском хорошо документированного файла libpq-dev rpm... Выше работала для меня только сейчас.

Ответ 8

У меня была такая же проблема на Mac.

Решение было использовать только PIP, чтобы установить все и коснуться некоторых вещей.

Сначала установите PIP из: https://pip.pypa.io/en/latest/

Затем вы хотите убедиться, что путь к pg_config находится в PATH (echo $PATH), если вы не можете редактировать свой файл bash_profile:

vi /Users/<user>/.bash_profile

и добавьте эту строку:

export PATH=$PATH:/path/to/pg_config/bin

Если вы не знаете, где pg_config, вы можете использовать инструмент "locate", но убедитесь, что ваш locate.db обновлен (я использовал старый файл locate.db и использовал пути, которые не существуют).

sudo /usr/libexec/locate.updatedb
locate pg_config

Затем установите Django (если необходимо) и psycopg2.

sudo pip install Django
sudo pip install psycopg2

И затем в settings.py(localhost: defaultport)

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

Поздравил!

Ответ 9

$ sudo apt-get install libpq-dev

Год, это решает мою проблему. После выполнения выполните следующие действия: pip install psycopg2

Ответ 10

Обратите внимание, что установка psycopg2 через pip или setup.py требует наличия Visual Studio 2008 (более точно исполняемый файл vcvarsall.bat). Если у вас нет прав администратора для его установки или установки соответствующей переменной PATH в Windows, вы можете загрузить уже скомпилированную библиотеку из здесь.