Django에서 PostgreSQL 데이터베이스를 설정하는 방법


107

저는 Python과 Django를 처음 사용합니다.

PostgreSQL 데이터베이스 엔진 백엔드를 사용하여 Django 프로젝트를 구성하고 있지만 각 데이터베이스 작업에서 오류가 발생합니다. 예를 들어 실행하면 다음과 같은 결과가 나타납니다 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
꽤 분명해 보입니다 : psycopg라는 모듈이 없습니다. 설치 했습니까?
Daniel Roseman 2011 년

아뇨. 나는 그것을 수행하려고합니다
앙드레

1
누군가 우리가 django와 함께 psycopg2가 필요한 이유를 말할 수 있습니까?
Amrit

답변:


210

설치해야합니다. psycopg2Python 라이브러리 .

설치


http://initd.org/psycopg/ 다운로드 한 다음 Python PATH에 설치합니다.

다운로드 후 tarball을 쉽게 추출하고 다음을 수행하십시오.

$ python setup.py install

또는 원하는 경우 easy_install 또는 pip로 설치하십시오 .

( 저는 이유없이 easy_install보다 pip를 사용하는 것을 선호합니다. )

  • $ easy_install psycopg2
  • $ pip install psycopg2

구성


에서 설정

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

-기타 설치 지침은 다운로드 페이지설치 페이지 에서 확인할 수 있습니다 .


2
안녕하세요, 귀하의 지시를 따르지만 settings.py에서 사용하기 전에 사용자 / 비밀번호 쌍을 만들어야하는 것 같습니다.
Yulong 2015 년

2
그러나 나는 psycopg2.OperationalError: fe_sendauth: no password supplied실행할 때 이것을 얻는다 python manage.py syncdb. 나는 임의의 테이블 이름과 사용자 이름을 설정합니다.
Yulong

1
@RedRory 감사합니다, 이제 그들은있는 거 벌금)
알리레자 Savand

1
참고 : Django 1.9부터 다음과 같이 말할 수 있습니다. 'ENGINE': 'django.db.backends.postgresql',
powlo

1
나는이 대답했다하는 문제는 즉 django.db.backends.postgresql와 dosn't 작업 psycopg2. 작동 한 것은 django.db.backends.postgresql_psycopg2백엔드이며 Windows에서 pgAdmin을 시작할 때마다 변경되므로 포트 번호 지정을 피했습니다
Mustapha-Belkacim

31

또한 PostgreSQL 개발 패키지가 설치되어 있는지 확인하십시오. Ubuntu에서는 다음과 같이해야합니다.

$ sudo apt-get install libpq-dev

21

내가 사용하는 단계별 :

 - 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': '',
    }
}

특별한:

명령 줄을 사용하여 db를 만들려면 다음을 수행하면됩니다.

- 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': '',
    }
}

9

이것은 약간 길어 보일 수 있지만 오류없이 저에게 효과적이었습니다.

먼저 Ubuntu Software Center에서 phppgadmin을 설치하십시오.

그런 다음 터미널에서이 단계를 실행하십시오.

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

Apache 서버 시작

sudo service apache2 start

이제 터미널에서도 이것을 실행하여 아파치 파일을 편집하십시오.

sudo gedit /etc/apache2/apache2.conf

열린 파일에 다음 행을 추가하십시오.

Include /etc/apache2/conf.d/phppgadmin

이제 아파치를 다시로드하십시오. 터미널을 사용하십시오.

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/

데이터베이스를 보려면 생성 한 새 사용자를 사용하여 로그인하십시오.


왜 PHP로 귀찮게? 질문은 장고에 관한 것입니다 ...?
Sidhin S Thomas

1
@SidhinThomas phpPgAdmin은 PostgreSQL의 일반적인 관리 도구입니다. 데이터베이스가 실행되는 언어 / 프레임 워크에 의존하지 않습니다.
Jibu James 2017-06-27

Postgres 용 MySQL 워크 벤치와 같은 것이 없습니까?
Sidhin S 토마스

1
@SidhinThomas 예, MySQL 워크 벤치와 유사한 GUI 도구가 많이 있습니다. 여기를보세요. wiki.postgresql.org/wiki/...
Jibu 제임스

6

다음 명령으로 "psycopg"를 설치할 수 있습니다.

# sudo easy_install psycopg2

또는 pip를 사용할 수 있습니다.

# pip install psycopg2

easy_install 및 pip는 ActivePython 에 포함되어 있거나 프로젝트 사이트 에서 수동으로 설치 됩니다.

또는 미리 빌드 된 Windows 설치 프로그램을 가져옵니다 .


2
또는 sudo apt-get install python-psycopg2Debian 시스템을 사용 중이고 pip / easy_install 대신 패키지 관리자를 사용하려는 경우.
블레어


3

Fedora 20, Django 1.6.5, postgresql 9.3. *를 사용하고 psycopg2 모듈이 필요한 경우 다음을 수행하십시오.

yum install postgresql-devel
easy_install psycopg2

당신이 나와 같다면, 잘 문서화 된 libpq-dev rpm을 찾는 데 어려움이있을 수 있습니다. 위의 내용은 지금 저에게 효과적이었습니다.


3

Mac 에서 동일한 문제가 발생했습니다 .

해결책은 PIP 만 사용 하여 모든 것을 설치하고 몇 가지를 만지는 것이 었습니다.

먼저 https://pip.pypa.io/en/latest/ 에서 PIP를 설치합니다.

그런 다음에 path가 있는지 확인하려면 pg_config가 당신에 PATH ($ 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': '',
    }
}

인사!


2
$ sudo apt-get install libpq-dev

해, 이것은 내 문제를 해결합니다. 실행 후 다음을 수행하십시오. pip install psycopg2


0

psycopg2pip 또는 setup.py 를 통해 설치 하려면 Visual Studio 2008 (더 정확하게는 실행 파일 vcvarsall.bat )이 있어야 합니다. 설치하거나 Windows에서 적절한 PATH 변수를 설정할 관리자 권한이없는 경우 여기 에서 이미 컴파일 된 라이브러리를 다운로드 할 수 있습니다 .


이건 어때? Python 2.7 용 Microsoft Visual C ++ 컴파일러 == >> microsoft.com/en-us/download/details.aspx?id=44266
Ajeeb.KP

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.