无法将Django应用连接到外部PostgreSQL数据库

0 投票
3 回答
1613 浏览
提问于 2025-04-16 17:32

简短描述
我在尝试将一个Django应用(目前使用SQLite3)连接到我在Ubuntu服务器上新创建的PostgreSQL时遇到了很多问题。

问题
有没有人能分享一下成功的经验?有没有好的逐步教程?或者至少一些有用的调试建议?

目前的步骤(背景信息)
1) 我按照这个教程在我的Ubuntu服务器上安装了PostgreSQL。注意,这个过程没有出现任何错误。
2) 我按照下面的内容配置了Django的settings.py。

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql', 
    'NAME': 'mytestdb',                   
    'USER': 'mux_user',                    
    'PASSWORD': 'mux',                  
    'HOST': '192.168.1.111',                      
    'PORT': '',                  
    }
}

3) 运行了Django的'syncdb'。这时出现了以下错误。

django.core.exceptions.ImproperlyConfigured: 加载psycopg模块时出错:没有名为psycopg的模块

4) 我尝试用PIP、easy_install和setup.py来安装psycopg。结果都失败了,找不到pg_config。
5) 谷歌告诉我,我需要安装libpq-dev和python-dev才能编译psycopg包。这让我对自己在做什么失去了大部分信心。我明白这两个包是为了让我能够编译Python源代码,但这真的有必要吗?

系统信息
客户端:
操作系统:OS X Snow Leopard-10.6.6
Django:版本1.2.5
Python:2.7(在虚拟环境中运行)

即将成为客户端
操作系统:Windows XP / 7
运行上面提到的Python环境的打包可执行文件

服务器:
操作系统:Ubuntu 10.10(服务器,无图形界面)
PostgreSQL:8.4(这是apt-get install下载的版本)

更新
我在文档中找到了关于需要安装psycopg的说明。我想问题从“我真的需要这个吗?”变成了“在我的客户端上安装psycopg的最佳方法是什么?”

更新 2011年5月13日:上午9:20
在和同事讨论后,我相信这个StackOverflow的问题解决了我大部分的问题。

3 个回答

0

你需要把你的 pg_config 文件放到系统的路径里。首先,找到你电脑上的这个文件,然后运行类似下面的命令:

    export PATH=$PATH:/opt/local/lib/postgresql90/bin
    pip install psycopg2

如果你的电脑上没有安装 postgres,那么你可以通过 macports 来安装它:

    sudo port install postgresql90
1

我不是Python方面的专家,但你确实需要安装PostgreSQL的库,因为Python和PostgreSQL之间的接口(叫做psycopg)其实就是在PostgreSQL的C语言库上加了一层Python的东西。所以,如果没有PostgreSQL的开发库,就没有东西可以在Python中使用,也就无法通过Python和PostgreSQL进行交流。

0

我遇到的问题主要是因为我使用的是32位的Python版本(这是在Snow Leopard上使用wxPython 2.8所需要的)。你可以查看我在这个SO问题上的回答。

@mu is too short: 谢谢你的帮助。

撰写回答