الفرق بين المراجعتين لصفحة: «Python/Connection/set authorizer»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>Connection.complete_statement()‎</code> في بايثون}}</noinclude> يسجّل هذا التابع كائن استد...'
 
لا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التابع <code>Connection.complete_statement()‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:التابع <code>Connection.set_authorizer()‎</code> في بايثون}}</noinclude>


يسجّل هذا التابع كائن استدعاء خلفيٍّ، وينفّذ هذا الكائن في كل محاولة للوصول إلى عمود في جدول ضمن قاعدة البيانات.  
يسجّل هذا التابع كائن استدعاء خلفيٍّ، وينفّذ هذا الكائن في كل محاولة للوصول إلى عمود في جدول ضمن قاعدة البيانات.  
سطر 14: سطر 14:
كائن استدعاء خلفي يُنفّذ في كل محاولة للوصول إلى أعمدة الجداول في قاعدة البيانات.
كائن استدعاء خلفي يُنفّذ في كل محاولة للوصول إلى أعمدة الجداول في قاعدة البيانات.


يجب أن يعيد الاستدعاء الخلفية النتيجة SQLITE_OK إن كان الوصول مسموحًا به، والنتيجة SQLITE_DENY إن كان المطلوب تجاهل جملة SQL بأكملها مع إطلاق خطأ، والنتيجة SQLITE_IGONRE إن كن المطلوب التعامل مع العمود على أنّه يحمل القيمة NULL. هذه الثوابت متاحة في وحدة sqlite3.
يجب أن يعيد الاستدعاء الخلفية النتيجة <code>SQLITE_OK</code> إن كان الوصول مسموحًا به، والنتيجة <code>SQLITE_DENY</code> إن كان المطلوب تجاهل جملة [[SQL]] بأكملها مع إطلاق خطأ، والنتيجة <code>SQLITE_IGONRE</code> إن كن المطلوب التعامل مع العمود على أنّه يحمل القيمة <code>NULL</code>. هذه الثوابت متاحة في [[Python/sqlite3|وحدة <code>sqlite3</code>]].


يحدّد الوسيط الأول للاستدعاء الخلفي نوع العملية المفوَّضة، أما الوسيطان الثاني والثالث فتتحدّد طبيعتهما بين أن يكونا وسائط أو يكونا None بالاعتماد على الوسيط الأول.
يحدّد الوسيط الأول للاستدعاء الخلفي نوع العملية المفوَّضة، أما الوسيطان الثاني والثالث فتتحدّد طبيعتهما بين أن يكونا وسائط أو يكونا <code>None</code> بالاعتماد على الوسيط الأول.


الوسيط الرابع هو اسم قاعدة البيانات ("main"، "temp" ... الخ) إن كان قابلًا للتطبيق. أما الوسيط الخامس فهو إما اسم الإجراء أو العرض الداخلي المسؤول عن محاولة الوصول إلى العمود، أو القيمة None إن كانت عملية الوصول ناتجة بصورة مباشرة عن شيفرة SQL مدخلة.
الوسيط الرابع هو اسم قاعدة البيانات (<code>"main"، "temp</code>" ... الخ) إن كان قابلًا للتطبيق. أما الوسيط الخامس فهو إما اسم الإجراء أو العرض الداخلي المسؤول عن محاولة الوصول إلى العمود، أو القيمة <code>None</code> إن كانت عملية الوصول ناتجة بصورة مباشرة عن شيفرة [[SQL]] مدخلة.


نرجو منك مراجعة توثيق SQLite حول القيم التي يمكن للوسيط الأول أن يأخذها، والمعنى الذي يحمله الوسيطان الثاني والثالث بالاعتماد على الوسيط الأول. جميع الثوابت المطلوبة متوفّرة في وحدة sqlite3.
نرجو منك مراجعة [https://www.sqlite.org/docs.html توثيق SQLite] حول القيم التي يمكن للوسيط الأول أن يأخذها، والمعنى الذي يحمله الوسيطان الثاني والثالث بالاعتماد على الوسيط الأول. جميع الثوابت المطلوبة متوفّرة في [[Python/sqlite3|وحدة <code>sqlite3</code>]].


== أمثلة ==
== أمثلة ==
سطر 45: سطر 45:


== انظر أيضًا ==
== انظر أيضًا ==
* [[Python/Connection/set_progress_handler|التابع <code>Connection.set_progress_handler()‎</code>]]:يسجّل هذا التابع استدعاءً خلفيًا يجري تنفيذه لكل n من تعليمات SQLite في الجهاز الافتراضي virtual machine.
* [[Python/Connection/set_progress_handler|التابع <code>Connection.set_progress_handler()‎</code>]]:يسجّل هذا التابع استدعاءً خلفيًا يجري تنفيذه لكل <code>n</code> من تعليمات SQLite في الجهاز الافتراضي virtual machine.
* [[Python/Connection/set_trace_callback|التابع <code>Connection.set_trace_callback()‎</code>]]:يسجل التابع trace_callback يجري استدعاؤه لكل جملة SQL تنفّذ بواسطة SQLite.
* [[Python/Connection/set_trace_callback|التابع <code>Connection.set_trace_callback()‎</code>]]:يسجل التابع trace_callback يجري استدعاؤه لكل جملة [[SQL]] تنفّذ بواسطة SQLite.


== مصادر ==
== مصادر ==

المراجعة الحالية بتاريخ 20:14، 18 سبتمبر 2018


يسجّل هذا التابع كائن استدعاء خلفيٍّ، وينفّذ هذا الكائن في كل محاولة للوصول إلى عمود في جدول ضمن قاعدة البيانات.

البنية العامة

set_authorizer(authorizer_callback)

المعاملات

authorizer_callback

كائن استدعاء خلفي يُنفّذ في كل محاولة للوصول إلى أعمدة الجداول في قاعدة البيانات.

يجب أن يعيد الاستدعاء الخلفية النتيجة SQLITE_OK إن كان الوصول مسموحًا به، والنتيجة SQLITE_DENY إن كان المطلوب تجاهل جملة SQL بأكملها مع إطلاق خطأ، والنتيجة SQLITE_IGONRE إن كن المطلوب التعامل مع العمود على أنّه يحمل القيمة NULL. هذه الثوابت متاحة في وحدة sqlite3.

يحدّد الوسيط الأول للاستدعاء الخلفي نوع العملية المفوَّضة، أما الوسيطان الثاني والثالث فتتحدّد طبيعتهما بين أن يكونا وسائط أو يكونا None بالاعتماد على الوسيط الأول.

الوسيط الرابع هو اسم قاعدة البيانات ("main"، "temp" ... الخ) إن كان قابلًا للتطبيق. أما الوسيط الخامس فهو إما اسم الإجراء أو العرض الداخلي المسؤول عن محاولة الوصول إلى العمود، أو القيمة None إن كانت عملية الوصول ناتجة بصورة مباشرة عن شيفرة SQL مدخلة.

نرجو منك مراجعة توثيق SQLite حول القيم التي يمكن للوسيط الأول أن يأخذها، والمعنى الذي يحمله الوسيطان الثاني والثالث بالاعتماد على الوسيط الأول. جميع الثوابت المطلوبة متوفّرة في وحدة sqlite3.

أمثلة

يبين المثال التالي آلية عمل التابع:

>>> import sqlite3
>>> 
>>> def select_authorizer(*args):
...     print(args)
...     return sqlite3.SQLITE_OK
... 
>>> conn = sqlite3.connect(":memory:")
>>> conn.execute("CREATE TABLE A (name integer PRIMARY KEY AUTOINCREMENT)")
<sqlite3.Cursor object at 0x7f8ecec7f9d0>
>>> conn.set_authorizer(select_authorizer)
>>> conn.execute("SELECT * FROM A").fetchall()
(21, None, None, None, None)
(20, 'A', 'name', 'main', None)
(20, 'A', '', None, None)

انظر أيضًا

مصادر

صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.