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-0.1.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
...