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という名前のモジュールはありません。インストールしましたか?
ダニエルローズマン

いいえ、していません。私はそれをしようとします
アンドレ・

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

構成


設定の.py

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

2
psycopg2.OperationalError: fe_sendauth: no password supplied実行するとこれが表示されますpython manage.py syncdb。ランダムなテーブル名とユーザー名を設定しました。
Yulong

1
@RedRoryありがとう、今は元気です;)
Alireza Savand

1
参考:Django 1.9以降では、次のように言うことができます: 'ENGINE': 'django.db.backends.postgresql'、
powlo

1
この回答で私が抱えていた問題は、django.db.backends.postgresqlでは機能しないことpsycopg2です。機能したのはdjango.db.backends.postgresql_psycopg2バックエンドであり、Windowsで
pgAdmin

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

これもターミナルで実行して、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/

データベースを表示するために、作成した新しいユーザーを使用してログインします。


なぜPHPに悩むのですか?質問はDjangoについてです...?
Sidhin S Thomas 2017

1
@SidhinThomas phpPgAdminは、PostgreSQLの一般的な管理ツールです。データベースが実行される言語/フレームワークには依存しません。
Jibu James 2017

Postgres用のMySQLワークベンチのようなものはありませんか?
Sidhin S Thomas 2017

1
@SidhinThomasはい、MySQLワークベンチに似たGUIツールがたくさんあります。こちらをご覧ください。wiki.postgresql.org/wiki/…– Jibu
James

6

次のコマンドで「psycopg」をインストールできます。

# sudo easy_install psycopg2

または、pipを使用できます。

# pip install psycopg2

easy_installとpipはActivePythonに含まれているか、またはそれぞれの プロジェクトサイトから手動でインストールされます。

または、ビルド済みのWindowsインストーラーを入手するだけです。


2
またはsudo apt-get install python-psycopg2、Debianシステムを使用していて、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のみを使用することでしたすべてをインストールし、いくつかのものに触れることでした。

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

こんにちは!


2
$ sudo apt-get install libpq-dev

年、これは私の問題を解決します。これを実行した後、次のようにします。pip install psycopg2


0

psycopg2pipまたはsetup.py経由でのインストールには、Visual Studio 2008(より正確には実行可能ファイルvcvarsall.bat)が必要であることに注意してください。Windowsにインストールするか、適切なPATH変数を設定する管理者権限がない場合は、ここからコンパイル済みのライブラリをダウンロードできます。


これはどうですか?Microsoft Visual C ++ Compiler for Python 2.7 == >> microsoft.com/en-us/download/details.aspx?id=44266
Ajeeb.KP

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.