如何在Django中设置PostgreSQL数据库?

时间:2011-03-22 16:13:20

标签: python django postgresql psycopg2 django-settings

我是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 个答案:

答案 0 :(得分:194)

您需要安装psycopg2 Python库。

安装


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

下载后,轻松解压缩tarball:

$ python setup.py install

或者如果您愿意,可以easy_installpip安装。

我更喜欢使用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',
    }
}

- 其他安装说明可在download pageinstall page找到。

答案 1 :(得分:28)

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

$ sudo apt-get install libpq-dev

答案 2 :(得分:16)

我一步一步地使用:

  • sudo apt-get install python-dev
  • sudo apt-get install postgresql-server-dev-9.1
  • sudo apt-get install python-psycopg2 - 或者sudo pip install psycopg2

您可能希望为管理员数据库安装图形工具,然后执行以下操作: sudo apt-get install postgresql pgadmin3

之后,您必须更改Postgre用户密码,然后执行:

  • sudo su
  • su postgres -c psql postgres
  • ALTER USER postgres WITH PASSWORD&#39; YourPassWordHere&#39;;
  • \ q

在我的settings.py文件中,我执行:

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

答案 3 :(得分:9)

这可能看起来有点冗长,但它对我没有任何错误。

首先,从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

现在重新加载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/

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

答案 4 :(得分:6)

您可以使用以下命令安装“psycopg”:

# sudo easy_install psycopg2

或者,您可以使用pip:

# pip install psycopg2

easy_install和pip包含在ActivePython中,或者从respective project网站手动安装。

或者,只需获取pre-built Windows installer

答案 5 :(得分:4)

直接问题似乎是您错过了psycopg模块。

答案 6 :(得分:3)

如果您使用的是Fedora 20,Django 1.6.5,postgresql 9.3。*并且您需要psycopg2模块,请执行以下操作:

yum install postgresql-devel
easy_install psycopg2

如果你像我一样,你可能很难找到记录良好的libpq-dev rpm ......上面的内容对我来说很有用。

答案 7 :(得分:3)

我在 Mac 上遇到了同样的问题。

解决方案是仅使用 PIP 来安装所有内容,并触摸一些内容。

首先从以下位置安装PIP: https://pip.pypa.io/en/latest/

然后你想确定 pg_config 的路径是否在你的路径(echo $ PATH)中,如果没有,你可以编辑你的bash_profile:

vi /Users/<user>/.bash_profile

并添加以下行:

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

如果你不知道pg_config在哪里,你可以使用&#34; locate&#34;工具,但请确保您的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': '',
    }
}

电贺!

答案 8 :(得分:2)

$ sudo apt-get install libpq-dev

一年,这解决了我的问题。 执行此操作后,执行: pip install psycopg2

答案 9 :(得分:0)

请注意,通过pip或setup.py安装psycopg2需要安装Visual Studio 2008(更准确地说是可执行文件 vcvarsall.bat )。如果您没有管理员权限来安装它或在Windows上设置相应的PATH变量,您可以从here下载已编译的库。

答案 10 :(得分:0)

这是在ubuntu服务器中设置PostgreSQL的非常好的一步一步的过程之一。我已经尝试了Ubuntu 16.04及其工作。

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