如何在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,则可以从这里下载已编译的库。