Django'da PostgreSQL veritabanı nasıl kurulur


107

Python ve Django'da yeniyim.

PostgreSQL veritabanı motoru arka ucunu kullanarak bir Django projesi yapılandırıyorum, ancak her veritabanı işleminde hatalar alıyorum. Örneğin manage.py syncdbkoştuğumda şunu alıyorum:

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

Biri bana neler olup bittiğine dair bir ipucu verebilir mi?


11
Oldukça açık görünüyor: psycopg adında bir modül yok. Yükledin mi?
Daniel Roseman

Hayır, yapmadım. Bunu yapmaya çalışacağım
André

1
birisi neden django ile psycopg2'ye ihtiyacımız olduğunu söyleyebilir mi?
Amrit

Yanıtlar:


210

psycopg2Python kitaplığı kurmanız gerekiyor .

Kurulum


Http://initd.org/psycopg/ dosyasını indirin , ardından Python PATH altına kurun

İndirdikten sonra, tarball'ı kolayca çıkarın ve:

$ python setup.py install

Veya isterseniz, easy_install veya pip ile kurun .

( Sebepsiz yere easy_install yerine pip kullanmayı tercih ederim. )

  • $ easy_install psycopg2
  • $ pip install psycopg2

Yapılandırma


içinde ayarlardan .py

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

- Diğer kurulum talimatları indirme sayfasında ve kurulum sayfasında bulunabilir .


2
Merhaba, talimatınızı takip ediyorum ama görünen o ki, settings.py? De kullanmadan önce user / pwd çiftini oluşturmalıyım?
Yulong

2
ama bunu koştuğumda psycopg2.OperationalError: fe_sendauth: no password suppliedanlıyorum python manage.py syncdb. Rastgele tablo adı ve kullanıcı adı belirledim.
Yulong

1
@RedRory Teşekkürler, şimdi iyiler;)
Alireza Savand

1
Bilginize: Django 1.9'dan itibaren şunu söyleyebilirsiniz: 'ENGINE': 'django.db.backends.postgresql',
powlo

1
Bu cevapla yaşadığım sorun, bunun django.db.backends.postgresqlişe yaramaması psycopg2. django.db.backends.postgresql_psycopg2Windows'ta
pgAdmin'i

31

Ayrıca PostgreSQL geliştirme paketinin kurulu olduğundan emin olun. Ubuntu'da bunun gibi bir şey yapmanız gerekir:

$ sudo apt-get install libpq-dev

21

Kullandığım adım adım:

 - 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

Veritabanlarınızı yönetmek için bir grafik aracı kurmak isteyebilirsiniz, bunun için şunları yapabilirsiniz:

sudo apt-get install postgresql pgadmin3 

Ardından, Postgre kullanıcı şifresini değiştirmeli ve ardından şunları yapmalısınız:

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

Settings.py dosyanızda şunları yaparsınız:

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

Ekstra:

Komut satırını kullanarak db oluşturmak istiyorsanız, şunları yapabilirsiniz:

- 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 dosyanızda şunları yaparsınız:

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

9

Bu biraz uzun görünebilir, ancak benim için hatasız çalıştı.

İlk olarak, phppgadmin'i Ubuntu Yazılım Merkezi'nden yükleyin.

Ardından bu adımları terminalde çalıştırın.

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

Apache sunucusunu başlatın

sudo service apache2 start

Şimdi apache dosyasını düzenlemek için bunu da terminalde çalıştırın.

sudo gedit /etc/apache2/apache2.conf

Açılan dosyaya aşağıdaki satırı ekleyin:

Include /etc/apache2/conf.d/phppgadmin

Şimdi apache'yi yeniden yükleyin. Terminal kullanın.

sudo /etc/init.d/apache2 reload

Şimdi yeni bir veritabanı oluşturmanız gerekecek. Postgres kullanıcısı olarak giriş yapın. Terminalde devam edin.

sudo su - postgres

'Postgres' şifresiyle sorun yaşarsanız, buradaki cevabı https://stackoverflow.com/a/12721020/1990793 kullanarak değiştirebilir ve adımlara devam edebilirsiniz .

Şimdi bir veritabanı oluşturun

createdb <db_name>

Şimdi phppgadmin'e daha sonra giriş yapmak için yeni bir kullanıcı oluşturun ve yeni bir şifre sağlayın.

createuser -P <new_user>

Artık postgressql'iniz ayarlandı ve şu adrese gidebilirsiniz:

http://localhost/phppgadmin/

ve veritabanını görüntülemek için oluşturduğunuz yeni kullanıcıyı kullanarak oturum açın.


neden php ile uğraşıyorsun? Soru Django ile ilgili ...?
Sidhin S Thomas

1
@SidhinThomas phpPgAdmin, PostgreSQL için yaygın bir yönetim aracıdır. Veritabanının hangi dil / çerçevede çalıştığına bağlı değildir.
Jibu James

Postgres için MySQL çalışma tezgahı gibi bir şey yok mu?
Sidhin S Thomas

1
@SidhinThomas Evet, MySQL çalışma tezgahına benzer birçok GUI aracı var. Buraya bir göz atın. wiki.postgresql.org/wiki/…
Jibu James



3

Fedora 20, Django 1.6.5, postgresql 9.3. * Kullanıyorsanız ve psycopg2 modülüne ihtiyacınız varsa, şunu yapın:

yum install postgresql-devel
easy_install psycopg2

Eğer benim gibiyseniz, iyi belgelenmiş libpq-dev rpm'yi bulmakta sorun yaşayabilirsiniz ... Yukarıdakiler şu anda benim için çalıştı.


3

Mac'te de aynı Sorunu yaşıyordum .

Çözüm, her şeyi yüklemek için yalnızca PIP kullanmak ve bazı şeylere dokunmaktı.

İlk olarak PIP'yi şu adresten kurun: https://pip.pypa.io/en/latest/

Sonra yolu eğer emin olmak pg_config sizin içindedir PATH (echo $ PATH) Eğer bash_profile düzenleyebilirsiniz değilse:

vi /Users/<user>/.bash_profile

ve şu satırı ekleyin:

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

Pg_config'in nerede olduğunu bilmiyorsanız "locate" aracını kullanabilirsiniz, ancak locate.db'nizin güncel olduğundan emin olun (eski bir locate.db kullanıyordum ve mevcut olmayan yolları kullanıyordum).

sudo /usr/libexec/locate.updatedb
locate pg_config

Ardından Django (gerekirse) ve psycopg2'yi kurun.

sudo pip install Django
sudo pip install psycopg2

Ve sonra settings.py (localhost: defaultport) içinde

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

Greets!


2
$ sudo apt-get install libpq-dev

Yıl, bu benim sorunumu çözdü. Bunu yürüttükten sonra şunları yapın: pip install psycopg2


0

Lütfen psycopg2pip veya setup.py aracılığıyla yükleme işleminin Visual Studio 2008'e (daha doğrusu yürütülebilir dosya vcvarsall.bat ) sahip olmasını gerektirdiğini unutmayın . Windows üzerinde uygun YOL değişkeni yüklemek veya ayarlamak için yönetici haklarına sahip değilseniz, size zaten derlenmiş kütüphane indirebilirsiniz burada .


Peki buna ne dersin? Python 2.7 için Microsoft Visual C ++ Derleyici == >> microsoft.com/en-us/download/details.aspx?id=44266
Ajeeb.KP

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.