تغيير المخطط باستخدام cx_oracle
سؤال
حسنا، آمل أن لا يكون هذا مكررا، فإن البحث لم يسفر عن أي شيء مفيد.
لقد تم اللعب مع cx_Oracle
خلال الأيام القليلة الماضية، تثبيته واستخدامه. كل شيء سار جيدا حتى وصلت إلى مشكلتي الحالية: أود تغيير مخططي. إذا كنت أستخدم SQLPlus "تعيين جلسة تغيير" بسيطة Current_schema = Toto؛ سوف تفعل، لكنني لا أعرف كيفية الحصول على حولها مع cx_Oracle
.
لقد قمت بتنزيل أحدث إصدار المصادر: cx_oracle-5.0.2.tar.gz.
بحسب ال توثيق تغيير المخطط هو حالة بسيطة من الإعداد 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 (جمعت 64 مليار)
أنا أيضا جمعت cx_Oracle
لمدة 64 مليار، على نفس الجهاز.
المحلول
حسنا، أخيرا، بعد تحاول كثيرا والخطأ، يتبع fn
اقتراح والتحقيق في الداخل cx_Oracle
للعثور على خطأ ما.
اتضح أن عدد من الحجج والأساليب متوفرة فقط من خلال بعض الأعلام:
WITH_UNICODE
ينشطencoding
وnencoding
صفاتORACLE_10G
ينشطaction
,module
,clientinfo
وcurrent_schema
راجعت ووجدت أنني قد جمعت cx_Oracle
مقابل الإصدار 9 من عميل Oracle ... حتى يتم إعادة ترجمة الإصدار 10.2.0.3 من عميل Oracle والآن لدي حق الوصول إلى هذه الصفات.
عار أن التقييد لم يكن محاذا في الوثائق ... وأنا ممتن للغاية أن شفرة المصدر متاحة.
نصائح أخرى
حاول إعادة تثبيت cx_oracle. ربما يكون cx_oracle ربما افسدت. ما هو إصدار نظام التشغيل الخاص بك و Python؟