سؤال

أنا جديدة على الثعبان, و أنا أعمل على كتابة بعض رمز قاعدة البيانات باستخدام cx_Oracle وحدة نمطية.في cx_Oracle الوثائق لديهم المثال رمز مثل هذا:

import sys
import cx_Oracle

connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()

try:
    cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
    error, = exc.args
    print >> sys.stderr, "Oracle-Error-Code:", error.code
    print >> sys.stderr, "Oracle-Error-Message:", error.message

سؤالي له علاقة فيها "خطأ" يتم إنشاء الكائن.ماذا يعني ", ="تفعل ؟ حاولت البحث عن الثعبان الوثائق و محركات البحث لا تعمل بشكل جيد جدا عندما كنت تبحث عن شركات.:-)

وأنا أعلم أن exc.وسائط هو المفرد tuple, ولكن أنا فقط لا أفهم ", ="بناء الجملة.إذا كنت إزالة فاصلة ، أحصل على رسالة الخطأ "AttributeError: 'tuple' object has no attribute 'code'".

شخص ما يمكن أن تشير لي إلى حيث هذا هو موثق ؟ وذلك بفضل!

تحرير:

هذا يعمل دون الحاجة إلى فك tuple:

import sys
import cx_Oracle

connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()

try:
    cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
    print >> sys.stderr, "Oracle-Error-Code:", exc.args[0].code
    print >> sys.stderr, "Oracle-Error-Message:", exc.args[0].message
هل كانت مفيدة؟

المحلول

error, = exc.args

هذا هو حال تسلسل تفريغ.

أكثر قابلية للقراءة طريقة كتابة نفس اسلوب أنا شخصيا صالح،:

[error] = exc.args

هناك نوعان من البتات اللازمة لفهم المثال السابق:

  1. عند الجانب الأيسر من مهمة هو العودية تسلسل أسماء قيمة من الجانب الأيمن يجب أن يكون تسلسل مع طول نفس ، وكل بند من RHS تعيين قيمة اسم المناظرة في LHS.
  2. واحد البند tuple في بيثون هو مكتوب (foo,).في معظم السياقات ، قوسين يمكن حذفها.ولا سيما أنها يمكن حذف بجانب عامل التعيين.

نصائح أخرى

http://www.python.org/doc/2.5.2/tut/node7.html

البحث عن "تسلسل الفتح" في القسم 5.3.

فاصلة يعمل على فك tuple ، أيفإنه استخراج عنصر واحد من tuple كما بربط error.دون فاصلة ، يمكنك ربط المجموعة نفسها, بدلا من محتواه.

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