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

And*_*dré 103 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
Run Code Online (Sandbox Code Playgroud)

有人能给我一些关于发生了什么的线索吗?

Ali*_*and 205

您需要安装psycopg2Python库.

安装


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

下载后,轻松提取tarball并:

$ python setup.py install
Run Code Online (Sandbox Code Playgroud)

或者如果您愿意,可以通过easy_installpip安装它.

(我更喜欢在没有任何理由的情况下使用pip over 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',
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 嗨,我按照你的指示,但似乎我应该在settings.py中使用它们之前创建用户/密码对? (2认同)
  • 但是当我运行`python manage.py syncdb`时,我得到了这个"psycopg2.OperationalError:fe_sendauth:没有提供密码".我设置了随机表名和用户名. (2认同)
  • 仅供参考:从 Django 1.9 开始,您可以说: 'ENGINE': 'django.db.backends.postgresql', (2认同)
  • 我对这个答案的问题是“django.db.backends.postgresql”不适用于“psycopg2”。有效的是“django.db.backends.postgresql_psycopg2”后端,并避免指定端口号,因为每次在 Windows 上启动 pgAdmin 时它都会改变 (2认同)

小智 30

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

$ sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)


Gre*_*ory 21

我一步一步地使用:

  • 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'YourPassWordHere';
  • \ q

在我的settings.py文件中,我做:

 - 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
Run Code Online (Sandbox Code Playgroud)


Jib*_*mes 9

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

首先,从Ubuntu软件中心安装phppgadmin.

然后在终端中运行这些步骤.

sudo apt-get install libpq-dev python-dev
pip install psycopg2
sudo apt-get install postgresql postgresql-contrib phppgadmin
Run Code Online (Sandbox Code Playgroud)

启动apache服务器

sudo service apache2 start
Run Code Online (Sandbox Code Playgroud)

现在也在终端运行它来编辑apache文件.

sudo gedit /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)

将以下行添加到打开的文件中:

Include /etc/apache2/conf.d/phppgadmin
Run Code Online (Sandbox Code Playgroud)

现在重新加载apache.使用终端.

sudo /etc/init.d/apache2 reload
Run Code Online (Sandbox Code Playgroud)

现在,您必须创建一个新数据库.以'postgres'用户身份登录.继续在终端.

sudo su - postgres
Run Code Online (Sandbox Code Playgroud)

如果您使用'postgres'密码时遇到问题,可以使用/sf/answers/890471431/中的答案进行更改,然后继续执行这些步骤.

现在创建一个数据库

createdb <db_name>
Run Code Online (Sandbox Code Playgroud)

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

createuser -P <new_user>
Run Code Online (Sandbox Code Playgroud)

现在你的postgressql已经设置好了,你可以去:

http://localhost/phppgadmin/
Run Code Online (Sandbox Code Playgroud)

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


San*_*nda 6

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

# sudo easy_install psycopg2
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用pip:

# pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

easy_install和pip包含在ActivePython中,或者从相应的 项目站点手动安装.

或者,只需获取预构建的Windows安装程序.

  • 或者`sudo apt-get install python-psycopg2`如果你在Debian系统上并且想要使用包管理器而不是pip/easy_install. (2认同)

apt*_*pps 5

眼前的问题似乎是您缺少psycopg2模块。