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

我是Python和Django的新手。

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

有人可以给我一个线索怎么回事?

你需要安装psycopg2 Python库。

安装


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

下载后,轻松提取压缩包和:

 $ python setup.py install 

或者,如果您愿意,可以通过easy_install或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', } } 

– 其他安装说明可以在下载页面和安装页面find 。

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

 $ sudo apt-get install libpq-dev 

我一步一步使用:

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

你可能想安装一个pipe理你的数据库的graphics工具,然后执行:sudo apt-get install postgresql pgadmin3

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

  • sudo su
  • su postgres -c psql postgres
  • 改变用户postgres与密码'YourPassWordHere';
  • \ q

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

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

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

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

然后在terminal中运行这些步骤。

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

启动Apache服务器

 sudo service apache2 start 

现在在terminal中运行,编辑apache文件。

 sudo gedit /etc/apache2/apache2.conf 

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

 Include /etc/apache2/conf.d/phppgadmin 

现在重新加载Apache。 使用terminal。

 sudo /etc/init.d/apache2 reload 

现在你将不得不创build一个新的数据库。 以“postgres”用户身份login。 继续在terminal。

 sudo su - postgres 

如果您在使用“postgres”的密码时遇到问题,可以使用https://stackoverflow.com/a/12721020/1990793中的答案更改它,并继续执行步骤。;

现在创build一个数据库

 createdb <db_name> 

现在创build一个新用户以后login到phppgadmin,提供一个新的密码。

 createuser -P <new_user> 

现在你的postgressql已经安装好了,你可以去:

 http://localhost/phppgadmin/ 

并使用您创build的新用户login,以查看数据库。

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

 # sudo easy_install psycopg2 

或者,您可以使用点子:

 # pip install psycopg2 

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

或者,只需要预build的Windows安装程序 。

眼前的问题似乎是你错过了psycopg模块。

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

 yum install postgresql-devel easy_install psycopg2 

如果你像我一样,你可能无法find有据可查的libpq-dev rpm …上面刚刚为我工作。

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

解决scheme是只使用PIP来安装所有东西,然后触摸一些东西。

首先安装PIP: https //pip.pypa.io/en/latest/

然后你想确认是否你的PATH (echo $ PATH)path到pg_config ,如果没有,你可以编辑你的bash_profile:

 vi /Users/<user>/.bash_profile 

并添加这一行:

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

如果你不知道pg_config的位置,你可以使用“locate”工具,但要确保你的locate.db是最新的(我正在使用旧的locate.db并使用不存在的path)。

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

映入眼帘!

 $ sudo apt-get install libpq-dev 

一年,这解决了我的问题。 执行完后,请执行:pip install psycopg2

请注意,通过pip或setup.py安装psycopg2需要安装Visual Studio 2008(更精确的可执行文件vcvarsall.bat )。 如果您没有pipe理员权限来安装它或在Windows上设置相应的PATHvariables,则可以从这里下载已编译的库。