الفرق بين المراجعتين لصفحة: «Python/Connection/backup»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>Connection.backup()</code> في بايثون}}</noinclude> ينشئ هذا التابع نسخة احتياطية من...' |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:التابع <code>Connection.backup()</code> في بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:التابع <code>Connection.backup()</code> في بايثون}}</noinclude> | ||
ينشئ هذا التابع نسخة احتياطية من قاعدة بيانات SQLite | ينشئ هذا التابع نسخة احتياطية من قاعدة بيانات SQLite. يمكن إنشاء النسخة الاحتياطية اثناء استخدام قاعدة البيانات من قبل مستخدمين آخرين أو بالتزامن مع الاتصال الحالي. | ||
يمكن استخدام هذا التابع مع قواعد بيانات SQLite ذات الإصدار 3.6.11 وأعلى. | يمكن استخدام هذا التابع مع قواعد بيانات SQLite ذات الإصدار 3.6.11 وأعلى. | ||
سطر 13: | سطر 13: | ||
backup(target, *, pages=0, progress=None, name="main", sleep=0.250) | backup(target, *, pages=0, progress=None, name="main", sleep=0.250) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== المعاملات == | == المعاملات == | ||
=== <code>target</code> === | === <code>target</code> === | ||
تحفظ النسخة الاحتياطية في المعامل الإلزامي | تحفظ النسخة الاحتياطية في المعامل الإلزامي <code>target</code>، والذي يجب أن يكون نسخة كائن اتصال أخرى. | ||
=== <code>pages</code> === | === <code>pages</code> === | ||
تُنسخ قاعدة البيانات بأكملها في خطوة واحدة وعلى نحو افتراضي، أو عندما يأخذ المعامل pages القيمة 0 أو أي قيمة سالبة. أما لو أخذ المعامل قيمًا موجبة فإنّ التابع يقسم عملية النسخ إلى عدة صفحات بحسب العدد المحدد في المعامل pages. | تُنسخ قاعدة البيانات بأكملها في خطوة واحدة وعلى نحو افتراضي، أو عندما يأخذ المعامل <code>pages</code> القيمة <code>0</code> أو أي قيمة سالبة. أما لو أخذ المعامل قيمًا موجبة فإنّ التابع يقسم عملية النسخ إلى عدة صفحات بحسب العدد المحدد في المعامل <code>pages</code>. | ||
=== <code>progress</code> === | === <code>progress</code> === | ||
معامل اختياري، يأخذ القيمة None أو كائنًا قابلًا للاستدعاء callable والذي سينفّذ عند كل دورة من دورات عملية نسخ قاعدة البيانات، ويأخذ هذا الكائن ثلاثة وسائط هي status وهي حالة الدورة الأخيرة، remaining وهو عدد الصفحات المتبقية للنسخ، | معامل اختياري، يأخذ القيمة <code>None</code> أو كائنًا قابلًا للاستدعاء <code>callable</code> والذي سينفّذ عند كل دورة من دورات عملية نسخ قاعدة البيانات، ويأخذ هذا الكائن ثلاثة وسائط هي <code>status</code> وهي حالة الدورة الأخيرة، و <code>remaining</code> وهو عدد الصفحات المتبقية للنسخ، و<code>total</code> وهو العدد الكلي للصفحات. | ||
=== <code>name</code> === | === <code>name</code> === | ||
يحدّد هذا المعامل اسم قاعدة البيانات التي سيجري نسخها، ويجب أن يكون سلسلة نصية تتضمّن القيمة "main" وهي القيمة الافتراضية وتشير إلى قاعدة البيانات الرئيسية، أو "temp" للإشارة إلى قاعدة البيانات المؤقتة، أو الاسم الذي يلي الكلمة المفتاحية AS في جملة ATTACH DATABASE لقواعد البيانات الملحقة. | يحدّد هذا المعامل اسم قاعدة البيانات التي سيجري نسخها، ويجب أن يكون سلسلة نصية تتضمّن القيمة <code>"main"</code> وهي القيمة الافتراضية وتشير إلى قاعدة البيانات الرئيسية، أو <code>"temp"</code> للإشارة إلى قاعدة البيانات المؤقتة، أو الاسم الذي يلي الكلمة المفتاحية <code>[[SQL/as|AS]]</code> في جملة <code>[[SQL/attach database|ATTACH DATABASE]]</code> لقواعد البيانات الملحقة. | ||
=== <code>sleep</code> === | === <code>sleep</code> === | ||
يحدّد هذا المعامل عدد الثواني التي يجب على التابع أن يتوقف فيها بين محاولتين متتابعتين لإنشاء نسخة احتياطية للصفحات المتبقية، ويمكن تحديد قيمة هذا المعامل باستخدام الأعداد الصحيحة أو الأعداد العشرية ذات الفاصلة العائمة. يأخذ هذا المعامل القيمة الافتراضية 0.250 ثانية. | يحدّد هذا المعامل عدد الثواني التي يجب على التابع أن يتوقف فيها بين محاولتين متتابعتين لإنشاء نسخة احتياطية للصفحات المتبقية، ويمكن تحديد قيمة هذا المعامل باستخدام الأعداد الصحيحة أو الأعداد العشرية ذات الفاصلة العائمة. يأخذ هذا المعامل القيمة الافتراضية <code>0.250</code> ثانية. | ||
== أمثلة == | == أمثلة == | ||
سطر 39: | سطر 36: | ||
<syntaxhighlight lang="python3"> | <syntaxhighlight lang="python3"> | ||
import sqlite3 | import sqlite3 | ||
سطر 61: | سطر 56: | ||
source.backup(dest) | source.backup(dest) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== مصادر == | == مصادر == |
المراجعة الحالية بتاريخ 21:29، 18 سبتمبر 2018
ينشئ هذا التابع نسخة احتياطية من قاعدة بيانات 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 في توثيق بايثون الرسمي.