Ensimmäisen Mallin Luominen
SQLAlchemyn avulla mallin luominen tarkoittaa Python-luokan määrittelyä, joka vastaa tietokannan taulua. Jokainen tämän luokan ilmentymä edustaa yhtä riviä taulussa. Käydään läpi yksinkertainen esimerkki, jossa luodaan Comment-malli käyttäjien kommenttien tallentamista varten.
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)
Tämä määrittelee Python-luokan nimeltä Comment, joka edustaa taulua tietokannassa. Luokka perii Base:sta, mikä mahdollistaa sen yhdistämisen tietokannan tauluun.
__tablename__ = "comments"
Comment-luokka, joka perii Base:sta, määrittelee taulun tietokantaan. Tämä mahdollistaa sen yhdistämisen tietokantatauluun käyttäen Object-Relational Mapping (ORM) -tekniikkaa.
id = Column(Integer, primary_key=True)
Kenttä id toimii ensisijaisena avaimena (primary key), varmistaen että jokaisella kommentilla on yksilöllinen tunniste. SQLAlchemy kasvattaa arvoa automaattisesti jokaiselle uudelle riville.
content = Column(Text, nullable=False)
Kenttä content sisältää kommentin tekstin. Se on pakollinen kenttä, eli kommenttia ei voi lisätä tietokantaan, jos tämä kenttä on tyhjä.
created_at = Column(DateTime, default=datetime.utcnow)
Kenttä created_at tallentaa automaattisesti aikaleiman sille hetkelle, kun kommentti luodaan. Jos arvoa ei anneta, se asetetaan nykyhetkeen käyttäen datetime.utcnow, jolloin aikaleima tallennetaan UTC-aikavyöhykkeellä.
Base.metadata.create_all(engine)
Tämä rivi luo kaikki taulut tietokantaan, jotka on määritelty malleissa. Se käyttää metadatan tietoja ja luo tarvittavat taulut annetun engine-yhteyden kautta. Tämä on hyödyllistä, kun halutaan luoda taulut automaattisesti, jos niitä ei vielä ole olemassa.
Swipe to start coding
Tässä tehtävässä saat lähtökohdan SQLAlchemy-mallin määrittelyyn. Tehtävänäsi on täydentää malli täyttämällä puuttuvat kohdat.
__tablename__-attribuutti määrittää tietokantataulun nimen. Korvaa paikkamerkki oikealla taulun nimelläUser-mallille.id-sarakkeen tulee olla ensisijainen avain. Lisää oikea avainsana osoittamaan tämä.username-sarakkeen tulee olla yksilöllinen, eli kahdella käyttäjällä ei voi olla samaa käyttäjätunnusta. Täydennä puuttuva avainsana.is_active-sarakkeella tulee olla oletusarvoTrue. Lisää oikea argumentti asettaaksesi tämä oletusarvo.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain what the `engine` variable is and how to set it up?
How do I add a new comment to the database using this model?
What is the purpose of `declarative_base()` in this example?
Awesome!
Completion rate improved to 4.76
Ensimmäisen Mallin Luominen
Pyyhkäise näyttääksesi valikon
SQLAlchemyn avulla mallin luominen tarkoittaa Python-luokan määrittelyä, joka vastaa tietokannan taulua. Jokainen tämän luokan ilmentymä edustaa yhtä riviä taulussa. Käydään läpi yksinkertainen esimerkki, jossa luodaan Comment-malli käyttäjien kommenttien tallentamista varten.
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)
Tämä määrittelee Python-luokan nimeltä Comment, joka edustaa taulua tietokannassa. Luokka perii Base:sta, mikä mahdollistaa sen yhdistämisen tietokannan tauluun.
__tablename__ = "comments"
Comment-luokka, joka perii Base:sta, määrittelee taulun tietokantaan. Tämä mahdollistaa sen yhdistämisen tietokantatauluun käyttäen Object-Relational Mapping (ORM) -tekniikkaa.
id = Column(Integer, primary_key=True)
Kenttä id toimii ensisijaisena avaimena (primary key), varmistaen että jokaisella kommentilla on yksilöllinen tunniste. SQLAlchemy kasvattaa arvoa automaattisesti jokaiselle uudelle riville.
content = Column(Text, nullable=False)
Kenttä content sisältää kommentin tekstin. Se on pakollinen kenttä, eli kommenttia ei voi lisätä tietokantaan, jos tämä kenttä on tyhjä.
created_at = Column(DateTime, default=datetime.utcnow)
Kenttä created_at tallentaa automaattisesti aikaleiman sille hetkelle, kun kommentti luodaan. Jos arvoa ei anneta, se asetetaan nykyhetkeen käyttäen datetime.utcnow, jolloin aikaleima tallennetaan UTC-aikavyöhykkeellä.
Base.metadata.create_all(engine)
Tämä rivi luo kaikki taulut tietokantaan, jotka on määritelty malleissa. Se käyttää metadatan tietoja ja luo tarvittavat taulut annetun engine-yhteyden kautta. Tämä on hyödyllistä, kun halutaan luoda taulut automaattisesti, jos niitä ei vielä ole olemassa.
Swipe to start coding
Tässä tehtävässä saat lähtökohdan SQLAlchemy-mallin määrittelyyn. Tehtävänäsi on täydentää malli täyttämällä puuttuvat kohdat.
__tablename__-attribuutti määrittää tietokantataulun nimen. Korvaa paikkamerkki oikealla taulun nimelläUser-mallille.id-sarakkeen tulee olla ensisijainen avain. Lisää oikea avainsana osoittamaan tämä.username-sarakkeen tulee olla yksilöllinen, eli kahdella käyttäjällä ei voi olla samaa käyttäjätunnusta. Täydennä puuttuva avainsana.is_active-sarakkeella tulee olla oletusarvoTrue. Lisää oikea argumentti asettaaksesi tämä oletusarvo.
Ratkaisu
Kiitos palautteestasi!
single