مقدمة
MySQL — واحدة من أشهر قواعد البيانات العلائقية، وتُستخدم على نطاق واسع في تطوير الويب والحلول المؤسسية. للتعامل مع MySQL في Python، يُستخدم غالبًا مشغل PyMySQL — وهو تطبيق نقي بلغة Python لبروتوكول MySQL. يتميز بسهولة الاستخدام، والدعم النشط، والتوافق مع المكتبات الشهيرة مثل SQLAlchemy وPandas.
PyMySQL هو مشغل MySQL يتيح لك الاتصال بقاعدة البيانات، وتنفيذ استعلامات SQL، وإدارة المعاملات، والتكامل مع أطر الويب دون إعدادات معقدة. على عكس المشغلات الأخرى، كُتب PyMySQL بالكامل بلغة Python، مما يجعله متعدد المنصات وسهل التثبيت.
ما هو PyMySQL
PyMySQL هي مكتبة عميل بلغة Python تُطبّق بروتوكول MySQL Client/Server. توفر واجهة للاتصال بخادم MySQL وتنفيذ استعلامات SQL. تتبع المكتبة مواصفات Python Database API 2.0 (PEP 249)، مما يضمن التوافق مع تطبيقات Python الأخرى.
الميزات الرئيسية لـ PyMySQL
- Python نقي: لا يتطلب تبعيات خارجية بلغة C/C++
- التوافق: يدعم MySQL الإصدار 5.5 وما فوق
- الأمان: حماية مدمجة ضد هجمات SQL Injection
- الأداء: مُحسَّن لتنفيذ الاستعلامات بسرعة
- سهولة الاستخدام: واجهة برمجية بديهية
التثبيت والاتصال بـ MySQL
التثبيت
pip install pymysql
للوظائف الإضافية، يُوصى أيضًا بتثبيت:
pip install pymysql[rsa] # لدعم مصادقة RSA
الاتصال بقاعدة البيانات
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test_db',
port=3306,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
DictCursor يتيح لك الحصول على النتائج على شكل قواميس بدلاً من tuples، مما يجعل التعامل مع البيانات أكثر سهولة.
معاملات الاتصال
| المعامل | الوصف | النوع | القيمة الافتراضية |
|---|---|---|---|
host |
مضيف خادم MySQL | str | 'localhost' |
port |
منفذ الخادم | int | 3306 |
user |
اسم المستخدم | str | None |
password |
كلمة المرور | str | None |
database |
اسم قاعدة البيانات | str | None |
charset |
ترميز الأحرف | str | 'utf8mb4' |
autocommit |
الالتزام التلقائي | bool | False |
cursorclass |
فئة المؤشر | class | Cursor |
إنشاء قاعدة البيانات والجداول
# إنشاء قاعدة بيانات
with connection.cursor() as cursor:
cursor.execute("CREATE DATABASE IF NOT EXISTS test_db")
# إنشاء جدول
with connection.cursor() as cursor:
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
connection.commit()
عمليات CRUD باستخدام PyMySQL
إدراج البيانات
# إدراج سجل واحد
with connection