سؤال

أنا في حيرة من أمري بشأن سبب احتياج بايثون إلى كائن المؤشر.أعرف أن jdbc وأن اتصال قاعدة البيانات هناك بديهي تمامًا ولكن في لغة python أنا في حيرة من أمري مع كائن المؤشر.كما أنني أشك في الفرق بين وظيفة cursor. Close () وconnection. Close () من حيث إصدار الموارد.

هل كانت مفيدة؟

المحلول

نموذج المؤشر ليس خاصا ببيثون ولكن هي بنية بيانات متكررة في قواعد البيانات أنفسهم / ص>

اعتمادا على التنفيذ الأساسي قد يكون من الممكن توليد العديد من المؤشرات مشاركة نفس الاتصال بقاعدة بيانات.يجب أن يغلق المؤشر موارد مجانية مرتبطة بالاستعلام، بما في ذلك أي نتائج مطلقا من DB (أو جلبت ولكن لم يتم استخدامها) ولكنها لن تقضي على الاتصال بقاعدة البيانات نفسها حتى تتمكن من الحصول على مؤشر جديد على نفس قاعدة البياناتدون الحاجة إلى المصادقة مرة أخرى.

نصائح أخرى

كما ذكر آخرون، أ Connection() هو اتصال الشبكة بقاعدة البيانات، والاستخدام الحقيقي الوحيد له هو إرجاع المؤشرات. بيب-249, ، حيث تم تحديد DBApi 2.0، لا يحدد بوضوح ما هو الاتصال أو المؤشر بالضبط، ولا ما هو close() طريقة على كل ما يجب القيام به؛هذا فقط<الوحدة النمطية>.connect() يجب إرجاع مثيل<الوحدة النمطية>.Connection، الذي - التي<الوحدة النمطية>.Connection.cursor()يجب إرجاع مثيل<الوحدة النمطية>.Cursor، و<الوحدة النمطية>.Cursor.execute()يجب استدعاء البيان المقدم وإرجاع الصفوف الناتجة.وعلى وجه الخصوص، فإنه لا يحدد أ<الوحدة النمطية>.Connection.execute()، على الرغم من أن التطبيقات المحددة يمكن تنفيذها مجانًا كامتدادات.

من المحتمل أن يكون الاعتماد على هذه الامتدادات أمرًا غير حكيم، لأنه يعني أنه لن يكون لديك كود محمول.يجعل DBApi هذا المتطلب ذو المستويين لأن تنفيذ الاتصال بدون كائن وسيط قد يكون صعبًا في بعض قواعد البيانات.

كائن الاتصال هو اتصالك بقاعدة البيانات، وإغلاق ذلك عند الانتهاء من التحدث إلى قاعدة البيانات معا.كائن المؤشر هو جهاز كمتقل حول مجموعة النتائج من استعلام.أغلق أولئك عند الانتهاء من هذه النتائج.

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