در برنامهنویسی، مدیریت و تعامل با پایگاههای داده یکی از مهمترین مهارتهاست. پایتون به دلیل سادگی و قابلیتهای گستردهای که دارد، انتخابی عالی برای کار با دیتابیسها محسوب میشود. در این جزوه، یاد میگیریم که چگونه از پایگاه داده SQLite استفاده کنیم، به دیتابیسهای دیگر مانند MySQL و PostgreSQL متصل شویم و از ORM با SQLAlchemy بهره ببریم.
SQLite یک پایگاه داده سبک و بدون نیاز به سرور است که بهصورت یک فایل مستقل روی سیستم ذخیره میشود. پایتون بهصورت پیشفرض از SQLite پشتیبانی میکند و با استفاده از ماژول sqlite3 میتوان به راحتی با آن کار کرد.
۱.۱. ایجاد و اتصال به دیتابیس SQLite
import sqlite3
# اتصال به دیتابیس (اگر وجود نداشته باشد، ایجاد میشود)
cursor = conn.cursor()conn = sqlite3.connect("my_database.db")
۱.۲. ایجاد جدول در SQLite
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,age INTEGER NOT NULL)''')conn.commit()
۱.۳. درج داده در جدول
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Ali", 25))conn.commit()
۱.۴. خواندن دادهها
cursor.execute("SELECT * FROM users")rows = cursor.fetchall()for row in rows:print(row)
۱.۵. بهروزرسانی دادهها
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Ali"))conn.commit()
۱.۶. حذف دادهها
cursor.execute("DELETE FROM users WHERE name = ?", ("Ali",))conn.commit()
۱.۷. بستن اتصال به دیتابیس
conn.close()
برای کار با پایگاههای داده محبوبی مثل MySQL و PostgreSQL نیاز به نصب کتابخانههای مخصوص داریم.
۲.۱. اتصال به MySQL
برای اتصال به MySQL از کتابخانه mysql-connector-python استفاده میکنیم.
pip install mysql-connector-python
import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="password",database="test_db")cursor = conn.cursor()
۲.۲. اتصال به PostgreSQL
برای اتصال به PostgreSQL از کتابخانه psycopg2 استفاده میشود.
pip install psycopg2
import psycopg2conn = psycopg2.connect(dbname="test_db",user="postgres",password="password",host="localhost")cursor = conn.cursor()
۲.۳. اجرای کوئریها در MySQL و PostgreSQL
دستورات SQL در MySQL و PostgreSQL مشابه SQLite اجرا میشوند، فقط باید از cursor.execute() استفاده کنیم. بهعنوان مثال:
cursor.execute("SELECT * FROM users")rows = cursor.fetchall()for row in rows:print(row)
پس از انجام تغییرات:
conn.commit()conn.close()
ORM (Object-Relational Mapping) به ما این امکان را میدهد که بدون نیاز به نوشتن مستقیم کوئریهای SQL، با دیتابیس کار کنیم. SQLAlchemy محبوبترین ORM در پایتون است.
۳.۱. نصب SQLAlchemy
pip install sqlalchemy
from sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerBase = declarative_base()class User(Base):__tablename__ = "users"id = Column(Integer, primary_key=True)name = Column(String, nullable=False)age = Column(Integer, nullable=False)
۳.۳. اتصال به دیتابیس و ایجاد جداول
engine = create_engine("sqlite:///my_database.db")Base.metadata.create_all(engine)
۳.۴. کار با دادهها در SQLAlchemy
Session = sessionmaker(bind=engine)session = Session()# افزودن یک کاربر جدیدnew_user = User(name="Ali", age=25)session.add(new_user)session.commit()# خواندن دادههاusers = session.query(User).all()for user in users:print(user.name, user.age)
۳.۵. بهروزرسانی و حذف دادهها در SQLAlchemy
# بهروزرسانیuser = session.query(User).filter_by(name="Ali").first()user.age = 26session.commit()# حذفsession.delete(user)session.commit()