2010-01-06 9 views
5

kullanarak şema değiştirme Ben, bu bir çoğaltma değil, arama yararlı bir şey vermedi umarım.cx_Oracle

Son birkaç gün boyunca cx_Oracle ile oynuyor, kuruyor ve kullanıyordum. Şu anki sorunuma ulaşana kadar her şey yolunda gitti: Şemamı değiştirmek istiyorum. Eğer sqlplus kullanmış olsaydım basit bir 'alter session set current_schema = toto;' yapardı, ama cx_Oracle ile etrafta nasıl dolaşacağımı bilmiyorum.

En son kaynak sürümünü indirdim: cx_Oracle-5.0.2.tar.gz. şemanın documentation değişen göre

salt yazma özelliği olmalıdır Connection.current_schema ayarı basit bir durumdur ... Sorun benim Connection nesne herhangi current_schema niteliği yoktur olduğunu. hatayla

>>> c.current_schema = 'toto' 

sonuçlarını kullanarak niteliğini belirlemek için çalışılıyor

>>> c = cx_Oracle.connect(...) 
>>> dir(c) 
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', 
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', 'autocommit', 'begin', 'cancel', 'changepassword', 'close', 
'commit', 'cursor', 'dsn', 'encoding', 'inputtypehandler', 
'maxBytesPerCharacter', 'nencoding', 'outputtypehandler', 'password', 'prepare', 
'register', 'rollback', 'stmtcachesize', 'tnsentry', 'unregister', 'username', 
'version'] 

... __setattr__ görünüşte bunu önlemek için kılınmış.

Peki ... kimse nasıl yapılacağını biliyor mu?


İşte benim hatam.

>>> c.current_schema = 'toto' 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
AttributeError: 'cx_Oracle.Connection' object has no attribute 'current_schema' 

>>> setattr(c, 'current_schema', 'toto') 
# same error 

Ve burada OS ve piton hakkında bilgi şunlardır:

SUSE LINUX Enterprise Server 9 (x86_64) 
VERSION = 9 
PATCHLEVEL = 3 

Ve ben de çok üzerinde, 64bits için cx_Oracle derlenmiş

(64bits için derlenmiş) piton 2.6.2 kullanmak aynı makine.

+0

Görünür bir özellik olarak mevcut değil, çok fazla ifade edilmiyor. __setattr__ 'bazı gizemli şekilde uygulamak için geçersiz kılındı. 'C (c)' den daha önemli olan şey aslında c.current_schema = 'toto''yu yaptığınızda aldığınız asıl hatadır. –

cevap

6

Tamam, sonunda çok fazla denemeden ve hatadan sonra, öneriyi takip ettim ve sorunun ne olduğunu bulmak için cx_Oracle'un içinde araştırdım.

  • WITH_UNICODEencoding etkinleştirir ve nencoding
  • ORACLE_10Gaction, module, clientinfo ve current_schema
aktive nitelikleri:

Bu argümanlar ve bir takım yöntemler bazı bayraklar aracılığıyla kullanılabildiğini ortaya çıktı

Kontrol ettim vederlediğimi öğrendimoracle istemcisinin 9 sürümüne karşı ... bu yüzden Oracle istemcisinin 10.2.0.3 sürümüne karşı yeniden derledim ve şimdi bu özniteliklere erişebiliyorum.

Kısıtlamanın belgelerinizde kesinleşmediğinden utanç duyuyorsunuz ... ve kaynak kodun kullanılabilir olduğuna çok minnettarım.

2

cx_Oracle programını tekrar deneyin. Senin cx_Oracle muhtemelen berbat. İşletim sisteminiz ve python sürümünüz nedir?

+0

Yeni yükledim ve daha önce kullanabileceğimiz bir önceki sürüm yoktu ... –