का उपयोग कर स्कीमा बदलना ठीक है, मुझे आशा है कि यह एक डुप्लिकेट नहीं है, खोज ने कुछ भी उपयोगी नहीं बनाया है।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
संकलित, बहुत पर उपयोग एक ही मशीन
दृश्यमान विशेषता के रूप में मौजूद नहीं है इसका मतलब बहुत अधिक नहीं है। कुछ रहस्यमय तरीके से इसे लागू करने के लिए '__setattr__' ओवरराइड किया जा सकता है। 'डीआईआर (सी)' की तुलना में अधिक महत्वपूर्ण क्या वास्तविक त्रुटि है जब आपने वास्तव में 'c.current_schema =' toto'' किया था। –