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-pythonvə yaPyMySQL- 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.