التابع 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 في توثيق بايثون الرسمي.