Sobes.tech
Junior

Verilənlər bazaları ilə işləmək üçün hansı üsulları bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

  • Daxil olan modullar:
    sqlite3 - yüngül SQLite məlumat bazası ilə işləmək üçün. Kiçik layihələr və ya müştəri tərəfində fayl bazası kimi istifadə üçün uyğundur.

    import sqlite3
    
    # Məlumat bazasına qoşulma (fayl yoxdursa, yaradacaq)
    conn = sqlite3.connect('mydatabase.db')
    cursor = conn.cursor()
    
    # Cədvəl yaratmaq
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY,
            name TEXT NOT NULL,
            age INTEGER
        )
    ''')
    
    # Məlumat əlavə etmək
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30))
    
    # Dəyişiklikləri təsdiqləmək
    conn.commit()
    
    # Məlumatları əldə etmək
    cursor.execute("SELECT name, age FROM users")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    # Qoşulmanı bağlamaq
    conn.close()
    
  • Python DB API (PEP-249):
    Müxtəlif bazalar üçün çox sayda üçüncü tərəf sürücüsü tərəfindən müəyyən edilən standart interfeys. Kodun bazadan asılı olmadan yazılmasına imkan verir.

  • Xüsusi sürücülər/konnektorlar:
    Python DB API-ni həyata keçirən xüsusi kitabxanalar:

    • psycopg2 - PostgreSQL üçün.
    • mysql-connector-python və ya PyMySQL - MySQL üçün.
    • cx_Oracle - Oracle üçün.
    • pymssql - Microsoft SQL Server üçün.
    import psycopg2
    
    # PostgreSQL-ə qoşulma
    try:
        conn = psycopg2.connect(
            host="localhost",
            database="mydatabase",
            user="myuser",
            password="mypassword"
        )
        cursor = conn.cursor()
    
        # SQL sorğusunu icra etmək
        cursor.execute("SELECT * FROM products;")
        results = cursor.fetchall()
        for row in results:
            print(row)
    
        conn.close()
    except psycopg2.Error as e:
        print(f"Verilənlər bazasına qoşulmada xəta: {e}")
    
  • ORM (Obyekt-Əlaqə Xəritəsi):
    Python obyektləri ilə işləyən və SQL sorğularını birbaşa yazmadan bazalarla işləməyə imkan verən freymvorklar. Bazayla qarşılıqlı əlaqəni sadələşdirir, abstraksiya təmin edir, SQL-injeksiyalarını qarşısını alır.

    • SQLAlchemy - Python-da ən güclü və çevik ORM-lərdən biridir. Bir çox SDB-ni dəstəkləyir, həm "Core" (SQL səviyyəsində işləmək üçün), həm də "ORM" (obyekt yönümlü yanaşma üçün) təmin edir.
    • Django ORM - Django freymvorkunun daxili ORM-si, Django veb tətbiqlərində bazalarla işləmək üçün çox əlverişlidir.
    • Peewee - sadə və yüngül ORM.

    SQLAlchemy Core ilə nümunə:

    from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select
    
    # Baza ilə əlaqə (məsələn, SQLite)
    engine = create_engine('sqlite:///mydatabase.db')
    
    # MetaData obyekti - bazanın metadata-sını saxlamaq üçün
    metadata = MetaData()
    
    # Cədvəl tərifi
    users_table = Table(
        'users',
        metadata,
        Column('id', Integer, primary_key=True),
        Column('name', String),
        Column('age', Integer)
    )
    
    # Cədvəli bazada yaratmaq (əgər yoxdursa)
    metadata.create_all(engine)
    
    # Əlaqə qurmaq
    with engine.connect() as connection:
        # Məlumat əlavə etmək
        connection.execute(
            users_table.insert().values(name='Bob', age=25)
        )
    
        # Məlumatları seçmək
        select_query = select(users_table)
        result = connection.execute(select_query)
    
        for row in result:
            print(row)
    

    ORM ilə nümunə:

    from sqlalchemy import create_engine, Column, Integer, String
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    # Baza ilə əlaqə
    engine = create_engine('sqlite:///mydatabase_orm.db')
    
    # ORM modelləri üçün əsas sinif
    Base = declarative_base()
    
    # ORM modeli
    class User(Base):
        __tablename__ = 'users_orm'
        id = Column(Integer, primary_key=True)
        name = Column(String)
        age = Column(Integer)
    
        def __repr__(self):
            return f"<User(name='{self.name}', age={self.age})>"
    
    # Cədvəli yaratmaq (əgər yoxdursa)
    Base.metadata.create_all(engine)
    
    # Sessiya fabriki
    Session = sessionmaker(bind=engine)
    session = Session()
    
    # Obraz yaratmaq və əlavə etmək
    new_user = User(name='Charlie', age=40)
    session.add(new_user)
    
    # Əməliyyatı təsdiqləmək
    session.commit()
    
    # Obraz əldə etmək
    user = session.query(User).filter_by(name='Charlie').first()
    print(user)
    
    # Sessiyanı bağlamaq
    session.close()
    
  • NoSQL bazalar:
    NoSQL bazaları ilə işləmək üçün xüsusi kitabxanalar mövcuddur, məsələn:

    • pymongo - MongoDB üçün.
    • redis - Redis üçün.
    • cassandra-driver - Cassandra üçün.

Layihənin tələblərinə, istifadə olunan SDB növünə, ORM ehtiyacına və layihənin mürəkkəbliyinə görə seçim edilir.