/ / django oracle inspectdb failure - django, oracle, inspectdb

django oracle inspectdb failure - django, oracle, inspectdb

sto usando django 1.3, ho un database oracle esistente (10g) vorrei costruire il modello "s usando inspectdb.

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

quindi quando esegui inspectdb ottengo:

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

così aggiungo

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

provo ad accedere con sqlplus con le stesse credenziali e tutto sembra a posto.

quindi ... ho eseguito di nuovo inspectdb, ma questa volta ho capito

# 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

(cioè è vuoto)

qualche idea? non ho avuto problemi a far funzionare questo su un database mysql.

risposte:

1 per risposta № 1

Dal funzionario docs.

inspectdb funziona con PostgreSQL, MySQL e SQLite. Il rilevamento di chiave esterna funziona solo con PostgreSQL e con determinati tipi di tabelle MySQL.

Al momento non c'è un bug elencato nel tracker Django se si desidera inviarlo.


0 per risposta № 2

Ho una configurazione simile nella parte superiore del mio settings.py per impostare le mie variabili di ambiente per il mio driver Oracle (Oracle 11.2). Non sono sicuro se questo ti sarà d'aiuto nel tuo caso specifico.

### 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")

Non ho avuto problemi con manage.py inspectdb (Django 1.2.7 e Django 1.4) su Oracle 11.2.