Python
أولاً ، اتبع الإرشادات أولاً إلى تجميع وتثبيت litesync من الكود المصدري أو استخدم ثنائيات مسبقة مجسمة من أجلكمنصة.يمكنك البدء مع الإصدار المجاني.
ثم قم بتثبيت وحدة Litesync وفقًا لإصدار Python:
Python 3
pip install litesync
Python 2.7
git clone --depth=1 https://gitlab.com/litesync/python2 litesync-python2
cd litesync-python2
python setup.py build
sudo python setup.py install
رمز مثال
تحتوي وحدة Litesync على نفس API مثل sqlite3 الوحدة النمطية
import litesync as sqlite3
import json
import time
conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')
# check if the db is ready
while not conn.is_ready():
time.sleep(0.250)
# now we can use the db connection
...
تحديث الاشعارات
يمكن إخطار التطبيق الخاص بك عند تحديث قاعدة البيانات المحلية بسبب المزامنة مع العقد البعيدة.يتم الإخطار من خلال وظيفة محددة من قبل المستخدم.
def on_db_update(arg):
print("تم استلام التحديث")
conn.create_function("update_notification", 1, on_db_update)
المهم: تسمى وظيفة الإخطار من خلال مؤشر ترابط العامل.يجب أن يكون التطبيق ليس استخدام اتصال DB داخل وظيفة الإخطار ويجب أن يعود بأسرع وقت ممكن!يمكن للتطبيق نقل الإشعار إلى الموضوع الرئيسي قبل العودة.
استكشاف الأخطاء وإصلاحها
يمكننا أيضًا استخدام وحدة SQLite3 الخاصة بـ Python على Linux و Windows
في كلتا الحالتين ، واجهات وحدة sqlite3 من Python مع مكتبة sqlite للنظام
Linux
لدينا خياران لجعل Python لاستخدام مكتبة SQLite المعدلة التي تحتوي على litesync:
A. استخدم LD_LIBRARY_PATH عند فتح التطبيق
LD_LIBRARY_PATH=/usr/local/lib/litesync python app.py
B. اجعل وحدة sqlite3 استخدم مكتبة Litesync
sudo apt install patchelf
patchelf --replace-needed libsqlite3.so.0 liblitesync.so /usr/lib/python2.7/lib-dynload/_sqlite3.so
للتحقق مما إذا كانت ناجحة:
ldd /usr/lib/python2.7/lib-dynload/_sqlite3.so
Windows
استبدل ملف sqlite3.dll في المجلد \Python\ DLLs بالملف الذي يحتوي على LiteSync (إعادة التسمية من litesync.dll إلى sqlite3.dll)
Usage
في هذه الحالة ، نستخدم وحدة SQLite3 بدلاً من وحدة Litesync
import litesync as sqlite3
import json
import time
conn = sqlite3.connect('file:app.db?node=secondary&connect=tcp://server:port')
# check if the db is ready
while not conn.is_ready():
time.sleep(0.250)
# now we can use the db connection
...