التابع Connection.backup()
في بايثون
ينشئ هذا التابع نسخة احتياطية من قاعدة بيانات SQLite حتى أثناء الوصول إليها من قبل مستخدمين آخرين أو بالتزامن مع الاتصال الحالي.
يمكن استخدام هذا التابع مع قواعد بيانات SQLite ذات الإصدار 3.6.11 وأعلى.
ملاحظة: هذا التابع جديد في الإصدار 3.7 من اللغة.
البنية العامة
backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
المعاملات
target
تحفظ النسخة الاحتياطية في المعامل الإلزامي target، والذي يجب أن يكون نسخة كائن اتصال أخرى.
pages
تُنسخ قاعدة البيانات بأكملها في خطوة واحدة وعلى نحو افتراضي، أو عندما يأخذ المعامل pages القيمة 0 أو أي قيمة سالبة. أما لو أخذ المعامل قيمًا موجبة فإنّ التابع يقسم عملية النسخ إلى عدة صفحات بحسب العدد المحدد في المعامل pages.
progress
معامل اختياري، يأخذ القيمة None أو كائنًا قابلًا للاستدعاء callable والذي سينفّذ عند كل دورة من دورات عملية نسخ قاعدة البيانات، ويأخذ هذا الكائن ثلاثة وسائط هي status وهي حالة الدورة الأخيرة، remaining وهو عدد الصفحات المتبقية للنسخ، وtotal وهو العدد الكلي للصفحات.
name
يحدّد هذا المعامل اسم قاعدة البيانات التي سيجري نسخها، ويجب أن يكون سلسلة نصية تتضمّن القيمة "main" وهي القيمة الافتراضية وتشير إلى قاعدة البيانات الرئيسية، أو "temp" للإشارة إلى قاعدة البيانات المؤقتة، أو الاسم الذي يلي الكلمة المفتاحية AS في جملة ATTACH DATABASE لقواعد البيانات الملحقة.
sleep
يحدّد هذا المعامل عدد الثواني التي يجب على التابع أن يتوقف فيها بين محاولتين متتابعتين لإنشاء نسخة احتياطية للصفحات المتبقية، ويمكن تحديد قيمة هذا المعامل باستخدام الأعداد الصحيحة أو الأعداد العشرية ذات الفاصلة العائمة. يأخذ هذا المعامل القيمة الافتراضية 0.250 ثانية.
القيمة المعادة
أمثلة
المثال الأول: نسخ قاعدة بيانات إلى قاعدة بيانات أخرى
المثال الأول: نسخ قاعدة بيانات إلى قاعدة بيانات أخرى
import sqlite3
def progress(status, remaining, total):
print(f'Copied {total-remaining} of {total} pages...')
con = sqlite3.connect('existing_db.db')
with sqlite3.connect('backup.db') as bck:
con.backup(bck, pages=1, progress=progress)
المثال الثاني: نسخ قاعدة بيانات إلى قاعدة بيانات أخرى مؤقتة:
import sqlite3
source = sqlite3.connect('existing_db.db')
dest = sqlite3.connect(':memory:')
source.backup(dest)
انظر أيضًا
مصادر
صفحة DB-API 2.0 interface for SQLite databases في توثيق بايثون الرسمي.