الفرق بين المراجعتين ل"Python/sqlite3/connect"
(←uri) |
|||
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة) | |||
سطر 10: | سطر 10: | ||
== المعاملات == | == المعاملات == | ||
=== <code>database</code> === | === <code>database</code> === | ||
− | كائن شبيه بالمسار path-like يمثّل مسار ملف قاعدة البيانات (المسار المطلق أو النسبي للمجلد الحالي) الذي سيتم الاتصال به. يمكن استخدام القيمة ":memory:" لفتح اتصال مع قاعدة بيانات تخزّن في ذاكرة الوصول العشوائي RAM بدلًا من القرص الصلب. | + | كائن شبيه بالمسار path-like يمثّل مسار ملف قاعدة البيانات (المسار المطلق أو النسبي للمجلد الحالي) الذي سيتم الاتصال به. يمكن استخدام القيمة <code>":memory:"</code> لفتح اتصال مع قاعدة بيانات تخزّن في ذاكرة الوصول العشوائي RAM بدلًا من القرص الصلب. |
إذا أجريت عدة اتصالات بقاعدة بيانات واحدة، وأجرى أحد هذه الاتصالات تعديلًا على قاعدة البيانات، فإنّ الأخيرة تقفل إلى حين إكمال الإجراء وحفظه. | إذا أجريت عدة اتصالات بقاعدة بيانات واحدة، وأجرى أحد هذه الاتصالات تعديلًا على قاعدة البيانات، فإنّ الأخيرة تقفل إلى حين إكمال الإجراء وحفظه. | ||
سطر 38: | سطر 38: | ||
=== <code>uri</code> === | === <code>uri</code> === | ||
− | إن كان المعامل <code>uri</code> يحمل القيمة <code>True</code> فستفسّر قاعدة البيانات الحالية كمعرف موارد موحد <code>URI</code>، ويسمح هذا بتحديد بعض الخيارات الإضافية. فيمكن مثلًا فتح قاعدة البيانات | + | إن كان المعامل <code>uri</code> يحمل القيمة <code>True</code> فستفسّر قاعدة البيانات الحالية كمعرف موارد موحد <code>URI</code>، ويسمح هذا بتحديد بعض الخيارات الإضافية. فيمكن مثلًا فتح قاعدة البيانات للقراءة فقط، وذلك بالطريقة التالية:<syntaxhighlight lang="python3"> |
db = sqlite3.connect('file:path/to/database?mode=ro', uri=True) | db = sqlite3.connect('file:path/to/database?mode=ro', uri=True) | ||
</syntaxhighlight> | </syntaxhighlight> |
المراجعة الحالية بتاريخ 16:40، 16 سبتمبر 2018
تفتح هذه الدالة اتصالًا مع قاعدة بيانات SQLite عبر الملف المعطى، وتعيد افتراضيًا كائن اتصال ما لم تحدد قيمة أخرى في المعاملات.
البنية العامة
sqlite3.connect(database[, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri])
المعاملات
database
كائن شبيه بالمسار path-like يمثّل مسار ملف قاعدة البيانات (المسار المطلق أو النسبي للمجلد الحالي) الذي سيتم الاتصال به. يمكن استخدام القيمة ":memory:"
لفتح اتصال مع قاعدة بيانات تخزّن في ذاكرة الوصول العشوائي RAM بدلًا من القرص الصلب.
إذا أجريت عدة اتصالات بقاعدة بيانات واحدة، وأجرى أحد هذه الاتصالات تعديلًا على قاعدة البيانات، فإنّ الأخيرة تقفل إلى حين إكمال الإجراء وحفظه.
timeout
يحدّد هذا المعامل فترة انتظار الاتصال لرفع القفل عن قاعدة البيانات قبل إطلاق استثناء. القيمة الافتراضية لهذا المعامل هي 5.0
(خمس ثوانٍ).
isolation_level
راجع خاصية isolation_level
في كائنات الاتصال.
detect_types
تدعم قواعد بيانات SQLite الأنواع TEXT
و INTEGER
و REAL
و BLOB
و NULL
، وإذا أردت إضافة الدعم لأنواع أخرى فعليك القيام بذلك بنفسك، ويجعل المعامل detect_types
-إلى جانب المحوّلات المسجّلة بواسطة الدالة register_converter()
- هذه العملية يسيرة للغاية.
يأخذ المعامل detect_types
القيمة الافتراضية 0
(أي لن يجري الكشف عن أي نوع)، ويمكن تعيين أي مجموعة من قيم PARSE_DECLTYPES
و PARSE_COLNAMES
لتشغيل عملية الكشف عن الأنواع.
check_same_thread
يأخذ هذا المعامل -افتراضيًا- القيمة True
وحينها لا يمكن لأي خيط أن يستخدم الاتصال سوى سوى الخيط المسؤول عن إنشائه. أما إن أخذ المعامل القيمة False
فسيكون حينئذ بالإمكان استخدام الاتصال من قبل خيوط متعددة، ويجب على المستخدم في مثل هذه الحالة أن يسلسل serialize عمليات الكتابة لتجنب تلف البيانات.
factory
تستخدم وحدة sqlite3
كائن الاتصال لإجراء عملية الاتصال، ولكن يمكن تفريع صنف الاتصال ودفع الدالة connect()
إلى استخدام الصنف الخاص بالمستخدم وذلك بتقديمه كقيمة للمعامل factory.
راجع قسم SQLite وأنواع بايثون في هذا الدليل للاطلاع على المزيد من التفاصيل.
cached_statement
تستخدم وحدة sqlite3
ذاكرة مخبئية داخلية لتقليل عمليات تفسير عبارات SQL قدر الإمكان. يمكن استخدام المعامل cached_statement
لتحديد عدد العبارات التي ستخزّن في الذاكرة المخبئية لاتصال معين، وتخزّن الوحدة بصورة افتراضية 100
عبارة لكل اتصال.
uri
إن كان المعامل uri
يحمل القيمة True
فستفسّر قاعدة البيانات الحالية كمعرف موارد موحد URI
، ويسمح هذا بتحديد بعض الخيارات الإضافية. فيمكن مثلًا فتح قاعدة البيانات للقراءة فقط، وذلك بالطريقة التالية:
db = sqlite3.connect('file:path/to/database?mode=ro', uri=True)
يمكن الاطلاع على المزيد من المعلومات حول هذه الخاصية، إضافة إلى قائمة بالخيارات المتاحة، في توثيق SQLite URI.
ملاحظة: أضيف المعامل uri
في الإصدار 3.4 من اللغة.
ملاحظة: في الإصدار 3.7 أصبح بالإمكان استخدام الكائنات الشبيهة بالمسارات path-like objects لتمثيل قاعدة البيانات إلى جانب السلاسل النصية.
القيمة المعادة
تعيد الدالة افتراضيًا كائن اتصال ما لم تُحدّد قيمة خاصة للمعامل factory.
أمثلة
يبين المثال التالي آلية عمل التابع:
import sqlite3
conn = sqlite3.connect('example.db')
انظر أيضًا
مصادر
صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.