1

我正在使用 django 1.3。我有一个现有的 oracle 数据库(10g),我想使用inspectdb 构建模型。

'db': {
    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'DBNAME',
    'USER': 'me',
    'PASSWORD': 'something',
}

所以当运行 inspectdb 我得到:

$ python manage.py inspectdb --database db
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

所以我补充

$ export ORACLE_HOME=/usr/oracle/
$ TWO_TASK=DBNAME

我尝试使用相同的凭据登录 sqlplus,一切看起来都很好。

所以......我再次运行inspectdb,但这次我得到了

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#     * Rearrange models' order
#     * Make sure each model has one field with primary_key=True
# Feel free to rename the models, but don't rename db_table values or field names.
#
# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'
# into your database.

from django.db import models

(即它是空白的)

有任何想法吗?我没有问题让它在 mysql 数据库上工作。

4

2 回答 2

1

来自官方文档

inspectdb 适用于 PostgreSQL、MySQL 和 SQLite。外键检测仅适用于 PostgreSQL 和某些类型的 MySQL 表。

如果您想提交它,目前 Django 跟踪器中没有列出它的错误。

于 2011-08-26T14:56:22.160 回答
0

我的 settings.py 顶部有一个类似的设置来为我的 oracle 驱动程序(Oracle 11.2)设置我的环境变量。不确定这是否对您的具体情况有所帮助。

### SETTING  UP THE ENVIRONENT FOR OUR ORACLE RPM 
import os
os.putenv('ORACLE_HOME', '/.../oracle/11.2') 
os.putenv('LD_LIBRARY_PATH', '/.../oracle/11.2/lib')

manage.py inspectdb我对 Oracle 11.2 上的(Django 1.2.7 和 Django 1.4) 没有任何问题。

于 2012-06-28T14:18:30.243 回答