在 Windows环境中,使用django(0.96版本)、PostgreSQL(8.3.1版本),和psycopg2库开发Web应用需要先解决一个 小问题。我们需要自己手动修改django的一行代码。代码位于如下文件中,假设Python安装在C盘python25目录中:
c:/python25/Lib/site-packages/django/db/backends/postgresql_psycopg2/base.py
57行,源代码:
postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')]
修改后的代码:
postgres_version = [int(val[0]) for val in cursor.fetchone()[0].split()[1].split('.')]
造 成这个不兼容问题的原因是,从8.3版本开始Windows版本的PostgreSQL使用Visual C++编译,导致version函数的返回值较之8.2系列的version函数有很大不同。因此,django从version函数返回值中解析 PostgreSQL的版本号时就出现了错误。