如何在 Django 中设置 PostgreSQL 数据库

我刚接触巨蟒和姜戈。

我正在使用 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

谁能告诉我到底发生了什么?

213644 次浏览

当前的问题似乎是您错过了 神经病2模块。

你可以用下面的命令安装“ Psycopg”:

# sudo easy_install psycopg2

或者,你可以使用 pip:

# pip install psycopg2

Easy _ install 和 pip 包含在 ActivePython中,或者从 各自 项目站点手动安装。

Or, simply get the 预制 Windows Installer.

您需要安装 psycopg2 Python 库。

安装


下载 http://initd.org/psycopg/,然后在 Python PATH 下安装它

下载之后,轻松地解压缩 tarball 并:

$ python setup.py install

或者,如果你愿意,安装它通过 Easy _ installPip

(我更喜欢无缘无故地使用 pip 而不是 easy _ install。)

  • $ easy_install psycopg2
  • $ pip install psycopg2

配置


in 设定.py

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

- 其他安装说明可在 下载页安装页找到。

还要确保安装了 PostgreSQL 开发包。 在 Ubuntu 上你需要这样做:

$ sudo apt-get install libpq-dev

请注意,通过 pip 或 setup.py 安装 psycopg2需要 VisualStudio2008(更确切地说是可执行文件 Vcvarsall.bat)。如果没有在 Windows 上安装或设置适当 PATH 变量的管理员权限,可以从 给你下载已编译的库。

$ sudo apt-get install libpq-dev

这解决了我的问题。 执行此操作后,执行: 皮普安装精神病人2

如果您正在使用 Fedora 20,Django 1.6.5,postgreql 9.3. * ,并且您需要 Psycopg2模块,请执行以下操作:

yum install postgresql-devel
easy_install psycopg2

If you are like me, you may have trouble finding the well documented libpq-dev rpm... The above worked for me just now.

我在 麦克也有同样的问题。

解决方案是只使用 PIP来安装所有东西,并触摸一些东西。

首先安装来自: < a href = “ https://PIP.pypa.io/en/update/”rel = “ nofollow”> https://PIP.pypa.io/en/latest/的 PIP

然后,您需要确保到 pg_config的路径是否在您的 路径中(echo $PATH) ,如果不是,您可以编辑 bash _ profile:

vi /Users/<user>/.bash_profile

加上这句话:

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

如果不知道 pg _ config 在哪里,可以使用“ location”工具,但要确保 locate.db 是最新的(我使用的是一个旧的 locate.db,并使用不存在的路径)。

sudo /usr/libexec/locate.updatedb
locate pg_config

然后安装 Django (如果需要)和 Psycopg2。

sudo pip install Django
sudo pip install psycopg2

然后在 setings.py (localhost: defaultport)中

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

欢迎!

Step by step that I use:

 - 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

在 setings.py 文件中:

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

Extra:

如果要使用命令行创建数据库,只需执行以下操作:

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

On your settings.py file you do:

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

This may seem a bit lengthy, but it worked for me without any error.

首先,从 Ubuntu 软件中心安装 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

现在重新装载阿帕奇,使用终端。

sudo /etc/init.d/apache2 reload

现在您必须创建一个新的数据库。作为“ postgres”用户登录。在终端中继续。

sudo su - postgres

如果您在使用‘ postgres’密码时遇到麻烦,您可以使用这里的 https://stackoverflow.com/a/12721020/1990793答案来更改它,然后继续执行这些步骤。

Now create a database

createdb <db_name>

现在创建一个新用户以便稍后登录 phppgadmin,并提供一个新密码。

createuser -P <new_user>

现在已经设置好了后续操作,可以进入:

http://localhost/phppgadmin/

并使用您创建的新用户登录,以便查看数据库。

This is one of the very good and step by step process to set up PostgreSQL in ubuntu server. I have tried it with Ubuntu 16.04 and its working.

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

Steps to create a Django app with PostgreSQL database from scratch.

  1. 检查系统中是否安装了 PostgreSQL

    psql --version
    
  2. 如果安装了 PostgreSQL,则跳转到步骤6。

  3. To install PostgreSQL -

    sudo apt-get install python3-dev libpq-dev
    
    
    sudo apt-get install postgresql postgresql-contrib
    
  4. 默认情况下,PostgreSQL 安装创建一个名为“ postgres”的特殊用户,该用户拥有所有权限

    sudo -u postgres psql
    

    退出 PostgreSQL 会话

    \q
    
  5. 现在为“ postgres”用户设置密码。

    登录到 PostgreSQL-

    sudo -u postgres psql
    

    在 PostgreSQL 交互式会话中输入-

    \password postgres
    
  6. Create PostgreSQL database.

    直接从 bash shell 创建-

    sudo -u postgres createdb your_db_name
    

    从 PostgreSQL 交互式会话创建-

    createdb your_db_name
    

    To check if the database is created, list all databases using PostgreSQL command

    \l
    
  7. 如果您已经有一个现有的 Django 项目,那么跳到步骤11。否则创建一个虚拟环境。我使用 viralenv 包装器。

    mkvirtualenv your_project_name
    
  8. 创建 Django 项目。

    django-admin startproject your_project_name
    
  9. Cd to the project directory and create your app.

     python manage.py startapp your_app_name
    
  10. 安装姜戈。

    pip install django
    
  11. 安装 Psycopg2.Psycopg2是一个用于 Python 的 PostgreSQL 数据库适配器。

    pip install psycopg2
    
  12. 按如下方式更新 setings.py

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'your_db_name',
    'USER': 'postgres',
    'PASSWORD': 'xxxxx',
    'HOST': 'localhost',
    'PORT': '',
    }
    }
    
  13. 运行迁移。

    python3 manage.py migrate
    
  14. 运行 Django 服务器并访问 localhost: 8000

    python3 manage.py runserver 0.0.0.0:8000
    
  15. 如果需要,您可以安装 pgadmin-一个图形客户端来查看和操作 PostgreSQL 数据库模式和数据。

在 django 中整合 postgreql

Arch: Ubuntu 和 Nginx

sudo apt install libpq-dev postgresql postgresql-contrib

如果没有检查安装,systemctl status postgresql.service现在通常处于活动状态

By default, Postgres uses an authentication scheme called “对等认证” for local connections. Basically, this means that if the user’s operating system username John@example matches a valid Postgres username John, that user can login with no further authentication. During the Postgres installation, an operating system user named postgres was created to correspond to the postgres administrative user. We use this user to perform administrative tasks.

sudo -u postgres psql

postgres=# create database example;
CREATE DATABASE
postgres=# create user john with password 'abcxyz';
CREATE ROLE
postgres=# ALTER ROLE john SET client_encoding TO 'utf8';
postgres=# ALTER ROLE john SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE john SET timezone TO 'UTC';
postgres=# GRANT ALL PRIVILEGES ON DATABASE example TO john;

现在已经建立了 Postgres,这样 Django 就可以连接并管理其数据库信息。

pip install psycopg2-binary不建议生产,因为 psycopg2有不固定的问题。

设置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'example',
'USER': 'john',
'PASSWORD': 'abcxyz',
'HOST': 'localhost',
'PORT': '5432',  can be left empty
}
}

最后,使用这些基本的 django 迁移命令完成集成。

python manage.py makemigrations

python manage.py migrate

额外的待办事项小贴士

强烈建议使用更好的方法来设置关键值,如 NAME、 USER 和 PASSWORD,而不是像上面的数据库代码片段那样使用纯文本。

One method could be using a json file to replace those contents from outside the scope of project root directories. So even in unforeseeable cases of attempted source code hijacking your critical auth details could be out of reach.

假定将创建一个具有相应键值对的新 config.json文件。

{
"POSTGRES_DB": "example",
"POSTGRES_USER": "john",
"POSTGRES_PASSWORD": "abcxyz",
"POSTGRES_HOST": "localhost",
"POSTGRES_PORT": ""
}

将此代码放置在 settings.py中以加载并使用 config.json

import os
import json


with open('/path to your config.json file/') as config_file:
config = json.load(config_file)


更新数据库配置以从 config.json文件加载 params:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': config['POSTGRES_DB'],
'USER': config['POSTGRES_USER'],
'PASSWORD': config['POSTGRES_PASSWORD'],
'HOST': config['POSTGRES_HOST'],
'PORT': config['POSTGRES_PORT'],
}
}

Postgres 14在5433端口运行 在 setings.py 中指定它