Как настроить базу данных 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, вы можете загрузить уже скомпилированную библиотеку из здесь.
Ответ 11
Это один из очень хороших и пошаговых шагов по настройке PostgreSQL
на сервере Ubuntu. Я попробовал это с Ubuntu 16.04
и он работает.
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-14-04