2010-01-06 19 views
5

का उपयोग कर स्कीमा बदलना ठीक है, मुझे आशा है कि यह एक डुप्लिकेट नहीं है, खोज ने कुछ भी उपयोगी नहीं बनाया है।cx_Oracle

मैं पिछले कुछ दिनों से cx_Oracle के साथ टॉयइंग कर रहा हूं, इसे इंस्टॉल और उपयोग कर रहा हूं। जब तक मैं अपनी वर्तमान समस्या तक नहीं पहुंच जाता तब तक सब ठीक हो गया: मैं अपनी स्कीमा बदलना चाहता हूं। अगर मैं sqlplus का उपयोग कर रहा था तो एक सरल 'बदलें सत्र सेट current_schema = toto;' करेंगे, लेकिन मुझे नहीं पता कि cx_Oracle के साथ इसे कैसे प्राप्त किया जाए।

मैंने नवीनतम स्रोत संस्करण डाउनलोड किया है: cx_Oracle-5.0.2.tar.gz।

स्कीमा की documentation बदलते के अनुसार जो एक पढ़ने-लिखने की विशेषता किया जाना चाहिए Connection.current_schema स्थापित करने का एक सरल मामला है ... मुसीबत मेरी Connection वस्तु किसी भी current_schema विशेषता नहीं है।

>>> 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'] 

एक त्रुटि में विशेषता

>>> c.current_schema = 'toto' 

परिणामों का उपयोग निर्धारित करने के लिए कोशिश कर रहा है ... __setattr__ जाहिरा तौर पर यह को रोकने के लिए अधिरोहित किया गया है।

तो ... क्या किसी को पता है कि कैसे?


यहां मुझे मिली त्रुटि है।

>>> 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 

और यहाँ ओएस और अजगर के बारे में जानकारी कर रहे हैं:

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

और मैं अजगर 2.6.2 (64bits के लिए संकलित)

मैं भी 64bits के लिए cx_Oracle संकलित, बहुत पर उपयोग एक ही मशीन

+0

दृश्यमान विशेषता के रूप में मौजूद नहीं है इसका मतलब बहुत अधिक नहीं है। कुछ रहस्यमय तरीके से इसे लागू करने के लिए '__setattr__' ओवरराइड किया जा सकता है। 'डीआईआर (सी)' की तुलना में अधिक महत्वपूर्ण क्या वास्तविक त्रुटि है जब आपने वास्तव में 'c.current_schema =' toto'' किया था। –

उत्तर

6

ठीक है, आखिर में, मैंने कोशिश की और त्रुटि के बाद fn सुझाव दिया और cx_Oracle के अंदर गलत क्या पाया गया, यह जानने के लिए।

ऐसा लगता है कि तर्क और तरीकों की एक संख्या कुछ झंडे के माध्यम से ही उपलब्ध हैं:

  • WITH_UNICODEencoding सक्रिय करता है और nencoding विशेषताओं
  • ORACLE_10G को सक्रिय करता है action, module, clientinfo और current_schema

मैंने चेक किया और पाया कि मैंनेसंकलित किया था ओरेकल क्लाइंट के संस्करण 9 के खिलाफ... इसलिए मैंने ओरेकल क्लाइंट के संस्करण 10.2.0.3 के खिलाफ पुन: संकलित किया और अब मुझे इन विशेषताओं तक पहुंच है।

शर्म की बात है कि दस्तावेज़ीकरण में प्रतिबंध सटीक नहीं था ... और मैं बहुत आभारी हूं कि स्रोत कोड उपलब्ध है।

2

cx_Oracle को पुनर्स्थापित करने का प्रयास करें। आपका cx_Oracle शायद गड़बड़ हो गया है। आपका ओएस और पायथन संस्करण क्या है?

+0

मैंने अभी इसे स्थापित किया है और इसमें कोई पिछला संस्करण नहीं था इससे पहले कि यह अंतर हो सके ... –

संबंधित मुद्दे