Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellen Ihres Ersten Modells | SQLAlchemy
Datenbanken in Python

book
Erstellen Ihres Ersten Modells

In SQLAlchemy besteht das Erstellen eines Modells darin, eine Python-Klasse zu definieren, die einer Tabelle in der Datenbank entspricht. Jede Instanz dieser Klasse repräsentiert eine Zeile in der Tabelle. Lassen Sie uns ein einfaches Beispiel durchgehen, in dem wir ein Comment-Modell zum Speichern von Benutzerkommentaren erstellen.

python
from sqlalchemy import Column, Integer, String, Text, DateTime
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime

Base = declarative_base()

class Comment(Base):
__tablename__ = "comments" # the name of the table in the database

id = Column(Integer, primary_key=True) # primary key column, uniquely identifies each comment
content = Column(Text, nullable=False) # content of the comment, cannot be null
created_at = Column(DateTime, default=datetime.utcnow) # timestamp when the comment is created, defaults to current time

# Create all tables defined by models
Base.metadata.create_all(engine)

Dies definiert eine Python-Klasse namens Comment, die eine Tabelle in der Datenbank darstellt. Die Klasse erbt von Base, was es ihr ermöglicht, einer Tabelle in der Datenbank zugeordnet zu werden.

python
__tablename__ = "comments"

Die Comment-Klasse, die von Base erbt, definiert eine Tabelle in der Datenbank. Dies ermöglicht es, sie mithilfe von Object-Relational Mapping (ORM) einer Datenbanktabelle zuzuordnen.

python
id = Column(Integer, primary_key=True)

Das id-Feld dient als Primärschlüssel, der sicherstellt, dass jeder Kommentar einen eindeutigen Bezeichner hat. SQLAlchemy erhöht den Wert automatisch für jeden neuen Datensatz.

python
content = Column(Text, nullable=False)

Das id-Feld dient als Primärschlüssel, der sicherstellt, dass jeder Kommentar einen eindeutigen Bezeichner hat. SQLAlchemy erhöht den Wert automatisch für jeden neuen Datensatz.

python
created_at = Column(DateTime, default=datetime.utcnow)

Das created_at-Feld speichert automatisch den Zeitstempel, wann der Kommentar erstellt wurde. Wenn kein Wert angegeben wird, wird er auf die aktuelle Zeit mit datetime.utcnow gesetzt, um sicherzustellen, dass der Zeitstempel in UTC aufgezeichnet wird.

python
Base.metadata.create_all(engine)

Diese Zeile erstellt alle Tabellen in der Datenbank, die in den Modellen definiert wurden. Sie verwendet die Informationen aus den Metadaten und erstellt die erforderlichen Tabellen über die Verbindung, die durch den Engine bereitgestellt wird. Dies ist nützlich, um Tabellen automatisch zu erstellen, wenn sie noch nicht existieren.

Aufgabe

Swipe to start coding

In dieser Aufgabe erhalten Sie einen Ausgangspunkt zur Definition eines SQLAlchemy-Modells. Ihre Aufgabe ist es, das Modell zu vervollständigen, indem Sie die fehlenden Teile ausfüllen.

  1. Das Attribut __tablename__ gibt den Tabellennamen in der Datenbank an. Ersetzen Sie den Platzhalter durch den korrekten Tabellennamen für das User-Modell.
  2. Die id-Spalte sollte als Primärschlüssel markiert werden. Fügen Sie das richtige Schlüsselwortargument hinzu, um dies anzugeben.
  3. Die username-Spalte sollte eindeutig sein, was bedeutet, dass keine zwei Benutzer denselben Benutzernamen haben können. Füllen Sie das fehlende Schlüsselwortargument aus.
  4. Die is_active-Spalte sollte einen Standardwert von True haben. Fügen Sie das richtige Argument hinzu, um diesen Standardwert festzulegen.

Lösung

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

# Set up the database engine
engine = create_engine("sqlite:///data.db", echo=True)
Base = declarative_base() # define a base class for all models

class User(Base):
__tablename__ = "users" # table name in the database

id = Column(Integer, primary_key=True) # primary key column
username = Column(String, nullable=False, unique=True) # username column
age = Column(Integer) # age column
is_active = Column(Boolean, default=True) # boolean column with a default value

# Create all tables defined by models
Base.metadata.create_all(engine)

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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

# Set up the database engine
engine = create_engine("sqlite:///data.db", echo=True)
Base = declarative_base() # define a base class for all models

class User(Base):
__tablename__ = "___" # table name in the database

id = Column(Integer, ___=___) # primary key column
username = Column(String, nullable=False, unique=___) # username column
age = Column(Integer) # age column
is_active = Column(Boolean, ___=___) # boolean column with a default value

# Create all tables defined by models
Base.metadata.create_all(engine)

Fragen Sie AI

expand
ChatGPT

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

some-alt