يوفر Python العديد من الوحدات للعمل مع القواعد البيانية، بما في ذلك sqlite3، MySQLdb، و psycopg2. تتيح هذه الوحدات التفاعل السهل مع القواعد البيانية لتخزين، استرداد، ومعالجة البيانات بكفاءة. يمكنك بناء، تغيير، وإدارة قواعد البيانات بشكل فعال وكفاءة مع فهم أساسي لللغة Python وبناء جملة SQL.
طرق لإنشاء قاعدة بيانات باستخدام Python
الخطوة 1
قم بتثبيت محول قاعدة بيانات يتوافق مع نظام إدارة قاعدة البيانات الذي ترغب في استخدامه. على سبيل المثال، إذا كنت ستستخدم SQLite، يمكنك تثبيت وحدة sqlite3. لـ MySQL، يمكنك تثبيت وحدة MySQLdb، ولـ PostgreSQL، يمكنك تثبيت psycopg2. في هذا البرنامج التعليمي، سنفكر في SQLite، MongoDB، وMySQLdb. لاستخدام SQLite في رمز Python الخاص بك، استدعي وحدة sqlite3:
import sqlite3
بمجرد تثبيت الوحدة المناسبة، تحتاج إلى إنشاء اتصال بالقاعدة البيانية، والتي تعمل كجسر بين الكود البرمجي Python وقاعدة البيانات، مما يسمح لك بإرسال الأوامر واستقبال النتائج. على سبيل المثال، في SQLite، يمكنك إنشاء اتصال باستخدام الكود التالي.
للمثال على قاعدة بيانات تسمى school.db، توصل كما هو موضح في الكود أدناه:
conn = sqlite3.connect('school.db')
الخطوة 2
إنشاء جداول في قاعدة البيانات. لإنشاء جداول في قاعدة بيانات، ستحتاج إلى كتابة عبارات SQL باستخدام كائن العقدة التي تم الحصول عليها من الاتصال. على سبيل المثال، لإنشاء جدول يسمى “employees” بأعمدة “id”، “username”، salary، department، و “email”، تستخدم الكود التالي:
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
username TEXT,
email,
salary REAL,
department TEXT
)
''')
الخطوة 3
إدخال، تحديث، واسترداد البيانات من قاعدة البيانات باستخدام أوامر SQL وكائن العقدة. لإضافة البيانات إلى الجداول، يمكنك استخدام عبارة SQL “INSERT INTO”. احفظ البيانات باستخدام طريقة `commit()`. على سبيل المثال، الكود التالي يضيف بيانات إلى جدول “employees”:
conn = sqlite3.connect('school.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO employees (username, email, salary, department) VALUES ('Joseph', 'joseph@gmail,com' 70000, 'IT')")
conn.commit()
الخطوة 4
استرداد البيانات من الجداول. لاسترداد البيانات من الجداول، يمكنك استخدام عبارة SQL “SELECT”. على سبيل المثال، لاسترداد جميع المستخدمين من جدول “users”، يمكنك استخدام الكود التالي:
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall()
for row in rows:
print(row)
الخطوة 5
إنشاء عروض بتنفيذ عبارة CREATE VIEW، واستخدم طريقة `execute()` لكائن العقدة لتنفيذ عبارة CREATE VIEW.
# تنفيذ عبارة CREATE VIEW
cursor.execute('''
CREATE VIEW employees_view AS
SELECT name, age, department, email, FROM employees;
''')
الخطوة 6
إغلاق الاتصال. بمجرد الانتهاء من العمل مع قاعدة البيانات، من المهم إغلاق الاتصال لتحرير الموارد. يمكنك إغلاق الاتصال باستخدام طريقة close() لكائن الاتصال. على سبيل المثال:
conn.commit()
conn.close()
مثال لـ MySQLdb
لإنشاء قاعدة بيانات في MySQLdb، استدعي وحدة مدمجة من نوع MYSQLdb وقم بالاتصال بقاعدة البيانات باستخدام طريقة `connect()`. يمكنك إنشاء مفتاح وإستخدامه لتنفيذ أوامر SQL. تُستخدم طريقة `execute()` لإنشاء جدول وإدخال بيانات فيه. بعد الالتزام بالتغييرات، نستخدم المفتاح لتحديد البيانات من الجدول وجلب جميع البيانات باستخدام طريقة `fetchall()`. وأخيراً، أغلق المفتاح والاتصال بقاعدة البيانات.
import MySQLdb
# اتصال بقاعدة البيانات
conn = MySQLdb.connect(host="localhost", user="std", passwd="@12343!J", db="school.db")
# إنشاء مفتاح لتنفيذ أوامر SQL
cursor = conn.cursor()
# إنشاء جدول
cursor.execute("""
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
salary DECIMAL(10,2),
department VARCHAR(255)
)
""")
# إدخال بيانات في الجدول
cursor.execute("""
INSERT INTO employees (name, salary, department)
VALUES
("Joseph", 70000, "IT"),
("Jane", 80000, "Marketing")
""")
# الالتزام بالتغييرات في قاعدة البيانات
conn.commit()
# تحديد بيانات من الجدول
cursor.execute("SELECT * FROM employees")
# جلب جميع البيانات
employees = cursor.fetchall()
# طباعة البيانات
for employee in employees:
print(employee)
# إغلاق المفتاح والاتصال
cursor.close()
conn.close()
مثال لـ MongoDB
استدعي وحدة pymongo وقم بالاتصال بقاعدة البيانات باستخدام فئة `MongoClient()`. ثم احصل على مرجع لقاعدة البيانات والمجموعة المكافئة لجدول في SQL. تُستخدم طريقة `inser_many()` لإدخال البيانات في المجموعة. تُستخدم طريقة `find()` لطلب البيانات من المجموعة، ويتم جلب البيانات باستخدام حلقة for. وأخيراً، أغلق الاتصال بقاعدة البيانات باستخدام طريقة `close()`.
from pymongo import MongoClient
# اتصال بقاعدة البيانات
client = MongoClient("mongodb://localhost:27017/")
# الحصول على مرجع لقاعدة البيانات
db = client["school.db"]
# الحصول على مرجع للمجموعة (المكافئة لجدول في SQL)
collection = db["employees"]
# إدخال بيانات في المجموعة
employee1 = { "name": "Joseph", "salary": 70000, "department": "IT" }
employee2 = { "name": "Jane", "salary": 80000, "department": "Marketing" }
collection.insert_many([employee1, employee2])
# طلب البيانات من المجموعة
employees = collection.find()
# طباعة البيانات
for employee in employees:
print(employee)
# إغلاق الاتصال
client.close()
الخاتمة
في الختام، توفر بايثون العديد من الوحدات للتفاعل مع قواعد بيانات مختلفة، مثل MySQL و MongoDB. تستخدم وحدة MySQLdb للتفاعل مع قاعدة بيانات MySQL، وتستخدم وحدة pymongo للتفاعل مع قاعدة بيانات MongoDB. تسهّل كلتا الوحدتين على المطورين القيام بعمليات القواعد البيانية الشائعة مثل إنشاء جداول، إدخال البيانات، استعلام البيانات، وغيرها. مع بساطة وسهولة بايثون، أصبحت خيارًا شهيرًا لتطوير تطبيقات تعتمد على قواعد البيانات. سواء كنت مبتدئًا أو مطورًا ذو خبرة، استخدام هذه الوحدات سيجعل العمل مع قواعد البيانات في بايثون أمرًا سهلاً.
Source:
https://dzone.com/articles/an-overview-of-creating-databases-with-python-2