Как настроить базу данных 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

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


person André    schedule 22.03.2011    source источник
comment
Кажется вполне понятным: модуля с именем psycopg нет. Вы его установили?   -  person Daniel Roseman    schedule 22.03.2011
comment
Нет, не видел. Я постараюсь сделать это   -  person André    schedule 22.03.2011
comment
может кто-нибудь сказать, зачем нам psycopg2 с django?   -  person Amrit    schedule 20.04.2019


Ответы (11)


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

Установка


Загрузите 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',
    }
}

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

person Community    schedule 24.03.2011
comment
Привет, я следую вашим инструкциям, но мне кажется, что я должен создать пару user / pwd, прежде чем использовать их в settings.py? - person Yulong; 18.06.2012
comment
@Yulong вам нужно создать user для postgres, но пароль не нужен. - person Alireza Savand; 18.06.2012
comment
но я получаю это psycopg2.OperationalError: fe_sendauth: no password supplied, когда запускаю python manage.py syncdb. Я установил случайное имя таблицы и имя пользователя. - person Yulong; 18.06.2012
comment
@Yulong Я никогда не сталкивался с такой ошибкой, но, возможно, это поможет вам. groups.google.com/forum/?fromgroups#!topic/ django-users / Сообщите мне, решило ли это проблему. - person Alireza Savand; 18.06.2012
comment
Я попробую. на данный момент, поскольку я пытаюсь развернуть heroku, я сначала найду, есть ли способ, совместимый с heroku. но все же спасибо за быстрый ответ! - person Yulong; 18.06.2012
comment
Совместима ли она с Python 3.3? - person Green; 24.01.2013
comment
Если вы хотите использовать его с Django, нет, это не так. Сам Django еще не совместим с python3, я думаю, что psycopg2 совместим с python3, вам придется скомпилировать его самостоятельно. Посмотрите на этот комментарий: initd.org/psycopg/ article / 2012/03/29 / psycopg-245-Release / # c92 - person Alireza Savand; 24.01.2013
comment
убедитесь, что у вас установлен python-dev для psycopg2. Для большинства это может быть очевидным, но меня сбило с толку недавняя конфигурация сервера. - person bnjmn; 31.07.2013
comment
Все ссылки psycopg2 мертвы - person RedRory; 04.12.2013
comment
@RedRory Спасибо, теперь они в порядке;) - person Alireza Savand; 05.12.2013
comment
что такое django & python PATH? - person Thumbz; 26.06.2014
comment
К вашему сведению: начиная с Django 1.9 вы можете сказать: 'ENGINE': 'django.db.backends.postgresql', - person powlo; 02.04.2016
comment
@powlo Спасибо за комментарий, я обновил сообщение по этому поводу. - person Alireza Savand; 03.04.2016
comment
В Mojave (OS X 10.14) pip install psycopg2 изначально не работал у меня (python 3.7, django 2.2). См. Подробное решение здесь: stackoverflow.com/a/57014480/2162844 - person Bisonbleu; 13.07.2019
comment
Проблема, с которой я столкнулся с этим ответом, заключается в том, что django.db.backends.postgresql не работает с psycopg2. то, что сработало, - это django.db.backends.postgresql_psycopg2 серверная часть, и он избегал указания номера порта, поскольку он меняется каждый раз, когда вы запускаете pgAdmin в Windows - person Mustapha-Belkacim; 02.08.2019

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

$ sudo apt-get install libpq-dev
person Dennis Bunskoek    schedule 16.08.2012

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

 - 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 pgadmin4 

После этого вы должны изменить пароль пользователя 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': '',
    }
}

Дополнительный:

Если вы хотите создать базу данных с помощью командной строки, вы можете просто сделать:

- sudo su
- su postgres -c psql postgres
- CREATE DATABASE dbname;
- CREATE USER djangouser WITH ENCRYPTED PASSWORD 'myPasswordHere';
- GRANT ALL PRIVILEGES ON DATABASE dbname TO djangouser;

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

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'djangouser',
        'PASSWORD': 'myPasswordHere',
        'HOST': '',
        'PORT': '',
    }
}
person Gregory    schedule 28.09.2014

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

Сначала установите phppgadmin из Центра программного обеспечения Ubuntu.

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

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/

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

person Jibu James    schedule 08.05.2015
comment
зачем возиться с php? Вопрос про Джанго ...? - person Sidhin S Thomas; 25.06.2017
comment
@SidhinThomas phpPgAdmin - распространенный инструмент администрирования PostgreSQL. Это не зависит от того, на каком языке / фреймворке работает база данных. - person Jibu James; 27.06.2017
comment
нет ничего подобного MySQL workbench для Postgres? - person Sidhin S Thomas; 27.06.2017
comment
@SidhinThomas: Да, есть много инструментов с графическим интерфейсом, похожих на MySQL workbench. Взгляните сюда. wiki.postgresql.org/wiki/ - person Jibu James; 03.07.2017

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

# sudo easy_install psycopg2

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

# pip install psycopg2

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

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

person Sandro Munda    schedule 22.03.2011
comment
Или sudo apt-get install python-psycopg2, если вы работаете в системе Debian и хотите использовать менеджер пакетов, а не pip / easy_install. - person Blair; 23.03.2011

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

person aptwebapps    schedule 22.03.2011

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

yum install postgresql-devel
easy_install psycopg2

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

person MIke Kennedy    schedule 23.06.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': '',
    }
}

Приветствую!

person Juan Pablo Arriagada Cancino    schedule 02.09.2014

$ sudo apt-get install libpq-dev

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

person Gregory    schedule 20.04.2014

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

person Sergey Ivanov    schedule 11.03.2014
comment
Как насчет этого? Компилятор Microsoft Visual C ++ для Python 2.7 == ›› microsoft.com /en-us/download/details.aspx?id=44266 - person Ajeeb.K.P; 14.05.2015

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

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

person sgauri    schedule 21.03.2018