سؤال

حسنا، آمل أن لا يكون هذا مكررا، فإن البحث لم يسفر عن أي شيء مفيد.

لقد تم اللعب مع 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؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top