اذهب إلى المحتوى

السؤال

نشر

عندما أقوم بتنفيذ أي إستعلام بـ sqlalchemy فيتم إرجاع  النتائج من قاعدة البيانات وقد تحتوي هذه القائمة على نتيجة واحدة فقط أو قد تحتوي على مجموعة من النتائج وأحيانًا أخرى قد لا توجد أي نتائج على الإطلاق.

ما أريد القيام به هو الحصول على أول نتيجة فقط إذا لم يكن هناك غيرها، أو تنفيذ دالة ما في حالة كان هناك أكثر من نتيجة أو لا يوجد نتائج على الإطلاق

ما أريد القيام به مشابهة للتالي:

result = session.query(User)

if result > 1:
	return "more than one"
elif result == 0:
	return "no results found"

return jsonify(result)

كيف أقوم بالتحقق مما إذا كان هناك نتيجة واحدة أو مجموعة من النتائج أو لا يوجد نتائج أبدًا؟

Recommended Posts

  • 1
نشر

تستطيع إستخدام التابع query.one والذي يقوم بإرجاع نتيجة واحدة فقط، وفي حالة وجود أكثر من نتيجة سوف يقوم برفع استثناء MultipleResultsFound أما إذا لم يتم العثور على أي نتائج فسوف يقوم برفع استثناء NoResultFound، ويمكن تطبيق هذه الفكرة من خلال جملة Try .. except، على النحو التالي:

from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.exc import MultipleResultsFound

try:
    user = session.query(User).one()
    return jsonify(result)

except MultipleResultsFound, e:
    return "more than one"

except NoResultFound, e:
    return "no results found"

بهذا الشكل يمكنك تنفيذ ما تريد عندما يوجد نتيجة واحدة فقط أو يوجد عدد أكبر من النتائج أو لا يوجد نتائج على الإطلاق.

  • 0
نشر

النتائج التي ترجع من الsqlalchemy query تكون من نوعية query والتي يمكنك إستخدام الدالة count التي تتوفر بها والتي تقوم بإرجاع عدد النتائج على سبيل المثال

result = session.query(User)
print(result.count())

تلك الشفرة تقوم بإرجاع عدد النتائج الموجودة بالإستعلامة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...