0555333017

اهلا بكم فى الموقع الرسمى للمهندس خالد ابو ابراهيم

 المدير التنفيذي للمضيف الاول للاتصالات وتقنية المعلومات (ون هوست) والخبير في مواقع التواصل الاجتماعي 

إدارة قواعد البيانات بلغة البايثون

 
ماهي قاعدة البيانات :
هي سيرفر او مكان معين لتخزين البيانات.
 
من مميزات لغة البايثون إنها تدعم قواعد البيانات من نوع SQL,NOSQL
وأغلب قواعد البيانات من النوعين Oracle,Mysql,SQL server,SQLite ,Mongo DB
 
حنتعلم بشكل خفيف على مصطلح CRUD
المقصود ب CRUD:
C:الإضافة والإنشاء
 من أمر Create , Insert
R:قراءة البيانات
من أمر Select
U:التحديث
من أمر Update
D: من أمر Drop, Delete
 
CRUD:إضافة،قراءة،تحديث،حذف
SQL :
أغلب قواعد البيانات من هذا النوع متشابهة في الأوامر وبنية الأوامر ما عدى اختلافات بسيطة
بمعنى لو أشغلت على MySQL ومستقبلا احتجت أستخدم Oracle لن تواجه صعوبة في التعامل معها لأن كلها تندرج نحو نوع SQL
 
الفرق بين SQL,NoSQL
SQL: تتعامل مع schema
بمعنى إنني ملتزم ب structuringالخاص بالجدول كيف يعني؟
يعني إذا عندي جدول فيه 3 أعمده أنا ما قدر أضيف أكثر الا بعد ما ضيف الأعمدة الجديدة
مثال يوضح الموضوع أكثر :
عندي جدول اسمه users
الأعمده الي فيه id,username,password
إذا جيت بضيف مثلا name من النظام حقي ماقدر لأن الجدول مافيه عمود بهذا الإسم فلازم أضيفه في الجدول ثم أتعامل معه
 
__
NoSQL:تتعامل مع collection
بمعنى إن البيانات مخزنه على شكل json وماني ملتزم ب structuring معين
مثال يوضح الموضوع أكثر:
NoSQL ما تتعامل مع جداول
تتعامل مع collection
يعني لو جيت من النظام عندي وأضفت id,username,password
وجيب بعدها وأضفت username بس أو أضفت بيانات جديده name مثلا
أو age
الخ عادي بدون أي مشاكل لأن ما عندي schema ملتزم فيها في إضافة البيانات
 
تمتاز NoSQL بسرعة فائقة في قراءة البيانات باختلاف SQL
 
السؤال الأول إيش استخدم منهم ؟
يختلف من متطلبات نظام إلى نظام أخر
إذا كان النظام يحتاج ترابط وعلاقات بين الجداول ف الخيار الأمثل SQL بحكم NoSQL غير مناسبه للعلاقات
 
السؤال الثاني المعترف إن SQL تستوعب بيانات قرابة 3 TB
 ما هو الحل إذا كانت لدي بيانات كبيرة جدا تتعدا حجم التخزين؟
قد يكون أحد الحلول استخدام سيرفرات Hadoop server
أو ما شابه لتوزيع البيانات على أكثر من سيرفر عند الوصول إلى نهاية مساحة التخزين
 
عد ما أخذنا مقدمة عامة عن قواعد البيانات بنتعامل الأن مع قاعدة بيانات من SQL بإستخدامSQLite
إخترت SQLite كونها قاعدة بيانات محلية لاتتطلب وجود سيرفر لإستخدمها
 
انشاء قاعدة البيانات أو الإتصال بقاعدة بيانات:
 
import sqlite3
 
conn = sqlite3.connect('test.db')
print("connect database successfully");
 
في الأول إستدعاء لمكتبة sqlite3
 
ثم عرفنا متغير إسمه conn وفيه دالة الإتصالات بالقاعدة
ثم طباعة رسالة للتأكد من الإتصال
انشاء جدول في قاعدة البيانات:
 
conn.execute('''CREATE TABLE users
         (id INT,
         username TEXT,
         password  TEXT)''')
print("table created successfully")
 
كتبنا conn.execute
conn=المتغير ذا فيه قاعدة البيانات المتصل فيها
execute=تنفيذ الإجراء
وداخلها سكربت إنشاء جدول نهاية اليوم برسل مرجع للتعامل مع sql
 
إضافة بيانات للجدول:
 
conn.execute("INSERT INTO users (id,username,password)VALUES (1, 'ali', 'ali11' )")
 
conn.execute("INSERT INTO users (id,username,password)VALUES (2, 'moha', 'moha123' )")
 
conn.execute("INSERT INTO users (id,username,password)VALUES (3, 'kh', 'kha1200' )")
 
conn.commit()
print("add rows successfully")
 
الجديد في الكود
conn.commit()
commit=تستخدم عند التحديث وإضافة البيانات
 
إستخراج البيانات من الجدول :
data = conn.execute("SELECT * from users")
for row in data:
   print("id = ", row[0])
   print("username = ", row[1])
   print("password = ", row[2], "\n")
 
print("read data successfully")
 
data متغير
بيجلب كل البيانات من الجدول وتخزن فيه
يبقى الأن إستخراجها
نستخرجها بإستخدام التكرار من نوع iterator شرحته سابقا في محور التكرار
تحديث بيانات صف:
 
conn.execute("UPDATE users set id =8 where ID = 1")
conn.commit()
 
print("updated row successfully"(
 
حذف صف:
 
conn.execute("DELETE from users where ID = 2;")
conn.commit()
print("deleted row successfully")
 
بقية الأوامر نفس الطريقة
لما تتعامل معها كا اوامر من القاعدة او عن طريق نظامك نفس الاوامر بس اضافات خفيفه لتشغيل الامر في اللغة البرمجة
 
في مكتبة أيضا إسمها  sqlalchemy للتعامل مع جميع أنواع قواعد البيانات بإستخدام تقنية ORM في التعامل مع قواعد البيانات
 
ميزة المكتبة هذي إنك قادر تتعامل مع قاعدة بيانات بنفس السكربت التغيير فقط في دالة الإتصال بمعنى لو توسع مشروعك وإحتجت تستخدم قاعدة بيانات من نوع أخر كل الي عليك تصدر البيانات من القاعدة الحالية وتستوردها في القاعدة الجديدة وتغير دالة الإتصال فقط للقاعدة الجديدة بدون ماتعدل أي سكربت
مرجع ممتاز للتعرف والتعامل مع أوامر SQL
https://www.w3schools.com/sql/