რა მეთოდებს იცნობ მონაცემთა ბაზებთან მუშაობისთვის?
sobes.tech AI
პასუხი AI-სგან
-
შენახული მოდულები:
sqlite3- მსუბუქი SDB SQLite-ისთვის. მოსახერხებელია მცირე პროექტებისთვის ან როგორც ფაილური მონაცემთა ბაზა მომხმარებელზე.import sqlite3 # მონაცემთა ბაზასთან დაკავშირება (ფაილი შექმნის, თუ არ არსებობს) conn = sqlite3.connect('mydatabase.db') cursor = conn.cursor() # ცხრილის შექმნა cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER ) ''') # მონაცემების შეტანა cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30)) # ცვლილებების დადასტურება conn.commit() # მონაცემების მიღება cursor.execute("SELECT name, age FROM users") rows = cursor.fetchall() for row in rows: print(row) # კავშირის დახურვა conn.close() -
Python DB API (PEP-249):
სტანდარტული ინტერფეისი, რომელიც განსაზღვრავს უმეტესწილად მესამე მხარის დრაივერებს სხვადასხვა მონაცემთა ბაზებისთვის (PostgreSQL, MySQL, Oracle და სხვა). საშუალებას აძლევს დაწეროთ კოდი, რომელიც არ არის კონკრეტული SDB-ზე დამოკიდებული. -
სპეციალიზებული დრაივერები/კონექტორები:
ბიბლიოთეკები, რომლებიც ახორციელებენ Python DB API-ს კონკრეტული SDB-ებისთვის:psycopg2- PostgreSQL-ისთვის.mysql-connector-pythonანPyMySQL- MySQL-ისთვის.cx_Oracle- Oracle-ისთვის.pymssql- Microsoft SQL Server-ისთვის:
import psycopg2 # დაკავშირება PostgreSQL-სთან try: conn = psycopg2.connect( host="localhost", database="mydatabase", user="myuser", password="mypassword" ) cursor = conn.cursor() # SQL შეკვეთა cursor.execute("SELECT * FROM products;") results = cursor.fetchall() for row in results: print(row) conn.close() except psycopg2.Error as e: print(f"დატვირთვის შეცდომა მონაცემთა ბაზასთან: {e}") -
ORM (ობიექტ-რელაციური რუკა):
ჩარჩოები, რომლებიც საშუალებას აძლევენ მუშაობას მონაცემთა ბაზებთან Python ობიექტების გამოყენებით, არა პირდაპირ SQL შეკვეთებით. ამარტივებს ურთიერთქმედებას მონაცემთა ბაზასთან, უზრუნველყოფს აბსტრაქციას, ეხმარება SQL ინექციების თავიდან აცილებაში.- SQLAlchemy - ერთ-ერთი ყველაზე ძლიერი და მოქნილი ORM Python-ში. მხარს უჭერს მრავალი SDB-ს, უზრუნველყოფს როგორც "Core" (საკონტექსტო SQL-ის დონეზე მუშაობა), ასევე "ORM" (ობიექტური მიდგომა).
- Django ORM - Django-ის შიდა ORM, ძალიან მოსახერხებელია Django-ის ვებ-პროექტებში მონაცემთა ბაზებთან მუშაობისთვის.
- Peewee - მარტივი და მსუბუქი ORM:
მაგალითი SQLAlchemy Core-ით:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select # დაკავშირება მონაცემთა ბაზასთან (მაგ., SQLite) engine = create_engine('sqlite:///mydatabase.db') # MetaData ობიექტი მონაცემთა ბაზის მეტადატებისთვის metadata = MetaData() # ცხრილის განსაზღვრა users_table = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('age', Integer) ) # ცხრილის შექმნა მონაცემთა ბაზაში (თუ არ არსებობს) metadata.create_all(engine) # დაკავშირება with engine.connect() as connection: # მონაცემების შეტანა connection.execute( users_table.insert().values(name='Bob', age=25) ) # მონაცემების კითხვა select_query = select(users_table) result = connection.execute(select_query) for row in result: print(row)მაგალითი ORM-ით:
from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # მონაცემთა ბაზასთან დაკავშირება engine = create_engine('sqlite:///mydatabase_orm.db') # ORM მოდელების ძირითადი კლასი Base = declarative_base() # ORM მოდელის განსაზღვრა 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})>" # ცხრილის შექმნა (თუ არ არსებობს) Base.metadata.create_all(engine) # სესიის ფაბრიკის შექმნა Session = sessionmaker(bind=engine) session = Session() # ობიექტის შექმნა და დამატება new_user = User(name='Charlie', age=40) session.add(new_user) # ტრანზაქციის დადასტურება session.commit() # ობიექტის მიღება user = session.query(User).filter_by(name='Charlie').first() print(user) # სესიის დახურვა session.close() -
NoSQL მონაცემთა ბაზები:
NoSQL ბაზებთან მუშაობისთვის გამოიყენება სპეციალიზებული ბიბლიოთეკები, მაგალითად:pymongo- MongoDB-ისთვის.redis- Redis-ისთვის.cassandra-driver- Cassandra-ისთვის:
მოდელის არჩევა დამოკიდებულია პროექტის მოთხოვნებზე, გამოყენებული SDB ტიპზე, ORM-ის საჭიროებაზე და პროექტის სირთულეზე.