Как настроить базу данных PostgreSQL в Django - PullRequest
99 голосов
/ 22 марта 2011

Я новичок в 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

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

Ответы [ 11 ]

198 голосов
/ 24 марта 2011

Вам необходимо установить 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',
    }
}

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

28 голосов
/ 16 августа 2012

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

$ sudo apt-get install libpq-dev
16 голосов
/ 28 сентября 2014

Шаг за шагом, который я использую:

  • sudo apt-get install python-dev
  • sudo apt-get install postgresql-server-dev-9.1
  • sudo apt-get install python-psycopg2 - или sudo pip install psycopg2

Вы можете установить графические инструменты для управления вашими базами данных, затем выполните: sudo apt-get install postgresql pgadmin3

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

  • sudo su
  • su postgres -c psql postgres
  • ALTER USER postgres С ПАРОЛЕМ 'YourPassWordHere ';
  • \ q

В моем файле settings.py я делаю:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': '',
        'PORT': '',
    }
}
9 голосов
/ 08 мая 2015

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

Сначала установите 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», вы можете изменить его, используя ответ здесь https://stackoverflow.com/a/12721020/1990793, и продолжить с шагами.

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

createdb <db_name>

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

createuser -P <new_user>

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

http://localhost/phppgadmin/

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

6 голосов
/ 22 марта 2011

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

# sudo easy_install psycopg2

В качестве альтернативы вы можете использовать pip:

# pip install psycopg2

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

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

4 голосов
/ 22 марта 2011

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

3 голосов
/ 02 сентября 2014

У меня была такая же проблема на 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': '',
    }
}

Поздравил!

3 голосов
/ 23 июня 2014

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

yum install postgresql-devel
easy_install psycopg2

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

2 голосов
/ 20 апреля 2014
$ sudo apt-get install libpq-dev

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

0 голосов
/ 21 марта 2018

Это один из очень хороших и пошаговых шагов по настройке PostgreSQL на сервере Ubuntu.Я пробовал с Ubuntu 16.04 и он работает.

https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-14-04

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