- الأجهزة المدمجة وإنترنت الأشياء.
- تحليل البيانات.
- نقل البيانات من نظام إلى آخر.
- أرشفة البيانات و (أو) تعبئة البيانات في حاويات.
- تخزين البيانات في قاعدة بيانات خارجية أو مؤقتة.
- بديل لقاعدة بيانات الشركة المستخدمة لأغراض العرض أو الاختبار.
- التدريب ، إتقان المبتدئين للتقنيات العملية للعمل مع قاعدة البيانات.
- وضع النماذج الأولية والبحث في الامتدادات التجريبية للغة SQL.
يمكنك العثور على أسباب أخرى لاستخدام قاعدة البيانات هذه في وثائق SQLite . تتناول هذه المقالة استخدام SQLite في تطوير Python. لذلك ، من المهم بشكل خاص بالنسبة لنا أن يتم تضمين نظام إدارة قواعد البيانات (DBMS) ، الذي يمثله الوحدة النمطية ، في المكتبة القياسية للغة. أي ، تبين أنه للعمل مع SQLite من كود Python ، لا تحتاج إلى تثبيت بعض برامج خادم العميل ، ولا تحتاج إلى دعم تشغيل بعض الخدمات المسؤولة عن العمل مع DBMS. تحتاج فقط إلى استيراد الوحدة والبدء في استخدامها في البرنامج ، بعد تلقي نظام إدارة قاعدة البيانات العلائقية تحت تصرفك.
sqlite3sqlite3
استيراد الوحدة
قلت أعلاه أن SQLite هو نظام DBMS مدمج في Python. هذا يعني أنه لبدء العمل معها ، يكفي استيراد الوحدة المقابلة دون تثبيتها أولاً باستخدام أمر مثل
pip install. يبدو أمر استيراد SQLite كما يلي:
import sqlite3 as sl
إنشاء اتصال بقاعدة البيانات
لإنشاء اتصال بقاعدة بيانات SQLite ، لا داعي للقلق بشأن تثبيت برامج التشغيل ، وإعداد سلاسل الاتصال ، وأشياء أخرى من هذا القبيل. من السهل جدًا والسريع إنشاء قاعدة بيانات والحصول على عنصر اتصال بها تحت تصرفك:
con = sl.connect('my-test.db')
بتنفيذ هذا السطر من التعليمات البرمجية ، سننشئ قاعدة بيانات ونتصل بها. النقطة هنا هي أن قاعدة البيانات التي نتصل بها ليست موجودة بعد ، لذلك يقوم النظام تلقائيًا بإنشاء قاعدة بيانات فارغة جديدة. إذا تم إنشاء قاعدة البيانات بالفعل (دعنا نقول أن هذا
my-test.dbمن المثال السابق) ، من أجل الاتصال بها ، تحتاج فقط إلى استخدام نفس الرمز بالضبط.

ملف قاعدة بيانات تم إنشاؤه حديثًا
إنشاء جدول
لنقم الآن بإنشاء جدول في قاعدة البيانات الجديدة الخاصة بنا:
with con:
con.execute("""
CREATE TABLE USER (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
);
""")
يصف هذا كيفية إضافة جدول
USERبثلاثة أعمدة إلى قاعدة البيانات . كما ترى ، يعد SQLite نظامًا بسيطًا جدًا لإدارة قواعد البيانات ، ولكنه يحتوي على جميع القدرات الأساسية التي تتوقعها من نظام إدارة قواعد البيانات الارتباطية التقليدي. نحن نتحدث عن دعم أنواع البيانات ، بما في ذلك - الأنواع التي تسمح بقيمة null، ودعم المفتاح الأساسي والتزايد التلقائي.
إذا كان هذا الرمز يعمل كما هو متوقع (الأمر أعلاه ، مع ذلك ، لا يُرجع أي شيء) ، سيكون لدينا جدول تحت تصرفنا ، جاهز لمزيد من العمل معه.
إدراج السجلات في جدول
دعنا ندخل بعض السجلات في الجدول
USERالذي أنشأناه للتو. هذا ، من بين أمور أخرى ، سوف يعطينا دليلًا على أن الجدول قد تم إنشاؤه بالفعل بواسطة الأمر أعلاه.
لنتخيل أننا بحاجة إلى إضافة عدة سجلات إلى الجدول بأمر واحد. من السهل جدًا القيام بذلك في SQLite:
sql = 'INSERT INTO USER (id, name, age) values(?, ?, ?)'
data = [
(1, 'Alice', 21),
(2, 'Bob', 22),
(3, 'Chris', 23)
]
نحتاج هنا إلى تعريف تعبير SQL بعلامات استفهام (
?) كعناصر نائبة. نظرًا لأن لدينا كائن اتصال قاعدة بيانات تحت تصرفنا ، بعد أن أعددنا التعبير والبيانات ، يمكننا إدراج السجلات في الجدول:
with con:
con.executemany(sql, data)
بعد تنفيذ هذا الرمز ، لم يتم تلقي أي رسائل خطأ ، مما يعني أنه تمت إضافة البيانات بنجاح إلى الجدول.
تنفيذ استعلامات قاعدة البيانات
حان الوقت الآن لمعرفة ما إذا كانت الأوامر التي قمنا بتشغيلها قد عملت بشكل صحيح. دعنا ننفذ استعلامًا إلى قاعدة البيانات ونحاول الحصول على
USERبعض البيانات من الجدول . على سبيل المثال - نحصل على سجلات تتعلق بالمستخدمين الذين لا يتجاوز عمرهم 22 عامًا:
with con:
data = con.execute("SELECT * FROM USER WHERE age <= 22")
for row in data:
print(row)

نتيجة تنفيذ استعلام إلى قاعدة البيانات
كما ترى ، تمكنا من الحصول على ما هو مطلوب. وكان من السهل جدًا القيام بذلك.
بالإضافة إلى ذلك ، على الرغم من أن SQLite هو نظام DBMS بسيط ، إلا أنه يتمتع بدعم واسع للغاية. لذلك ، يمكنك العمل معها باستخدام معظم عملاء SQL.
أنا أستخدم DBeaver. دعونا نلقي نظرة على كيف يبدو.
الاتصال بقاعدة بيانات SQLite من عميل SQL (DBeaver)
أنا أستخدم خدمة Google Colab السحابية وأريد تنزيل ملف
my-test.dbعلى جهاز الكمبيوتر الخاص بي. إذا كنت تقوم بتجربة SQLite على جهاز كمبيوتر ، فهذا يعني أنه يمكنك الاتصال به باستخدام عميل SQL ، دون الحاجة إلى تنزيل ملف قاعدة بيانات من مكان ما.
في حالة DBeaver ، للاتصال بقاعدة بيانات SQLite ، تحتاج إلى إنشاء اتصال جديد وتحديد SQLite كنوع قاعدة البيانات.

تحضير الاتصال في DBeaver
Next ، تحتاج إلى العثور على ملف قاعدة البيانات.

ربط ملف قاعدة البيانات
بعد ذلك ، يمكنك تنفيذ استعلامات SQL على قاعدة البيانات. لا يوجد شيء مميز هنا ، يختلف عن العمل مع قواعد البيانات العلائقية العادية.

تنفيذ استعلامات قاعدة البيانات
التكامل مع الباندا
هل تعتقد أن هذا هو المكان الذي ننهي فيه حديثنا حول دعم SQLite في Python؟ لا ، لا يزال لدينا الكثير لنتحدث عنه. على وجه التحديد ، نظرًا لأن SQLite هي وحدة Python قياسية ، فإنها تتكامل بسهولة مع إطارات بيانات الباندا.
دعنا نعلن عن إطار البيانات:
df_skill = pd.DataFrame({
'user_id': [1,1,2,2,3,3,3],
'skill': ['Network Security', 'Algorithm Development', 'Network Security', 'Java', 'Python', 'Data Science', 'Machine Learning']
})

Pandas dataframe
لحفظ إطار بيانات في قاعدة البيانات ، يمكنك ببساطة استخدام طريقته
to_sql():
df_skill.to_sql('SKILL', con)
هذا كل شئ! لا نحتاج حتى إلى إنشاء جدول مسبقًا. سيتم تكوين أنواع البيانات وخصائص الحقول تلقائيًا استنادًا إلى خصائص إطار البيانات. بالطبع ، يمكنك تخصيص كل شيء بنفسك إذا لزم الأمر.
الآن لنفترض أننا بحاجة للحصول على اتحاد الجداول
USERو SKILL، وكتابة البيانات في datafreym الباندا. الأمر بسيط جدًا أيضًا:
df = pd.read_sql('''
SELECT s.user_id, u.name, u.age, s.skill
FROM USER u LEFT JOIN SKILL s ON u.id = s.user_id
''', con)

قراءة البيانات من قاعدة بيانات في إطار بيانات الباندا
عظيم! الآن دعنا نكتب ما وصلنا إلى جدول جديد يسمى
USER_SKILL:
df.to_sql('USER_SKILL', con)
بالطبع ، يمكنك العمل مع هذا الجدول باستخدام عميل SQL.

استخدام عميل SQL للعمل مع قاعدة بيانات
النتيجة
هناك بالتأكيد العديد من المفاجآت السارة في بايثون والتي قد لا تلاحظها ما لم تبحث عنها تحديدًا. لم يخف أحد مثل هذه الميزات بشكل خاص ، ولكن نظرًا لحقيقة أن الكثير من الأشياء مدمجة في Python ، لا يمكنك ببساطة الانتباه إلى بعض هذه الميزات ، أو بعد أن تعرفت عليها من مكان ما ، فقط نسيانها.
تحدثت هنا عن كيفية استخدام مكتبة Python المدمجة
sqlite3لإنشاء قواعد البيانات والعمل معها. بالطبع ، لا تدعم قواعد البيانات هذه عملية إضافة البيانات فحسب ، بل تدعم أيضًا عمليات تغيير المعلومات وحذفها. أعتقد أنك ، بعد أن تعلمت عنها sqlite3، ستختبرها بنفسك.
الشيء المهم للغاية هو أن SQLite تقوم بعمل رائع مع الباندا. من السهل جدًا قراءة البيانات من قاعدة البيانات بوضعها في إطارات البيانات. إن عملية حفظ محتويات إطارات البيانات في قاعدة بيانات لا تقل بساطة. هذا يجعل SQLite أسهل في الاستخدام.
أدعو كل من قرأ هذا الآن لإجراء أبحاثهم الخاصة بحثًا عن ميزات Python المثيرة للاهتمام!
يمكن العثور على الكود الذي عرضته في هذه المقالة هنا .
هل تستخدم SQLite في مشاريع Python الخاصة بك؟
