Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lesen aus der Datenbank | SQLAlchemy
Datenbanken in Python

book
Lesen aus der Datenbank

Dieses Kapitel konzentriert sich ausschließlich auf das Abrufen von Datensätzen aus einer Datenbank mit SQLAlchemy. Sie lernen, wie Sie einzelne oder mehrere Datensätze effizient mit verschiedenen Abfragemethoden abrufen können.

Abrufen eines einzelnen Datensatzes

Um einen einzelnen Datensatz abzurufen, verwenden Sie query() und wenden Filter an. Zum Beispiel, um ein Produkt nach seinem Namen zu finden:

python
product = session.query(Product).filter(Product.name == "Laptop").first()

Hier wählt .filter(Product.name == "Laptop") Produkte mit dem Namen "Laptop" aus, und .first() gibt den ersten passenden Datensatz oder None zurück.

Abrufen mehrerer Datensätze

Um mehrere Datensätze abzurufen, kombinieren Sie filter() mit .all(). Zum Beispiel, um alle Produkte aufzulisten:

python
products = session.query(Product).all()

Um Produkte zu filtern, z.B. solche, die über 1000 $ kosten, ändern Sie die Abfrage:

python
expensive_products = session.query(Product).filter(Product.price > 1000).all()

Verwendung von get() für Primärschlüsselabfragen

Für eine effiziente Abfrage nach Primärschlüssel verwenden Sie get(). Zum Beispiel, um ein Produkt mit der ID 1 abzurufen:

python
product = session.query(Product).get(1)

Begrenzung der Ergebnisse

Um die Anzahl der abgerufenen Datensätze zu begrenzen, verwenden Sie .limit(). Zum Beispiel, um die ersten 3 Produkte abzurufen:

python
limited_products = session.query(Product).limit(3).all()

Indem Sie diese Techniken beherrschen, können Sie effizient die benötigten Daten abrufen, sei es ein einzelner Datensatz, mehrere gefilterte Ergebnisse oder ein begrenzter Ausschnitt.

Aufgabe

Swipe to start coding

Vervollständigen Sie den gegebenen Code, um alle Datensätze aus der products-Tabelle in der Datenbank abzurufen. Verwenden Sie das session-Objekt, das Product-Modell und die geeignete Methode, um alle Einträge abzurufen.

Lösung

from sqlalchemy import create_engine, Column, Integer, String, Boolean
from sqlalchemy.orm import declarative_base, sessionmaker

# Initialize the database
engine = create_engine("sqlite:///example.db")
Base = declarative_base()

# Define the Product model
class Product(Base):
__tablename__ = "products"
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
description = Column(String)
price = Column(Integer, nullable=False)
is_in_stock = Column(Boolean, default=True)

# Create tables
Base.metadata.create_all(engine)

# Set up the session
Session = sessionmaker(bind=engine)
session = Session()

# Add multiple products (one at a time)
products_to_add = [
{"name": "Laptop", "description": "High-end gaming laptop", "price": 1500},
{"name": "Smartphone", "description": "Latest model smartphone", "price": 800},
{"name": "Headphones", "description": "Noise-cancelling headphones", "price": 200}
]

# Iterate through the list and add each product one by one
for product in products_to_add:
new_product = Product(**product) # Unpack the dictionary as keyword arguments
session.add(new_product)
session.commit() # Commit after adding each product

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
from sqlalchemy import create_engine, Column, Integer, String, Boolean
from sqlalchemy.orm import declarative_base, sessionmaker

# Initialize the database
engine = create_engine("sqlite:///example.db")
Base = declarative_base()

# Define the Product model
class Product(Base):
__tablename__ = "products"
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
description = Column(String)
price = Column(Integer, nullable=False)
is_in_stock = Column(Boolean, default=True)

# Create tables
Base.metadata.create_all(engine)

# Set up the session
Session = sessionmaker(bind=engine)
session = Session()

# Add multiple products (one at a time)
products_to_add = [
{"name": "Laptop", "description": "High-end gaming laptop", "price": 1500},
{"name": "Smartphone", "description": "Latest model smartphone", "price": 800},
{"name": "Headphones", "description": "Noise-cancelling headphones", "price": 200}
]

# Iterate through the list and add each product one by one
for product in products_to_add:
new_product = Product(**product) # Unpack the dictionary as keyword arguments
session.add(new_product)
session.commit() # Commit after adding each product

# Retrieve the products from the database
retrieved_products = ___.query(___).___()

print("\nAll products in the database:")
for product in retrieved_products:
print(product.name)

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt