SQLAlchemy voorbeeld met SQLite
Op deze pagina:
Een voorbeeld met SQLAlchemy en SQLite:
#!/usr/bin/env python3
from sqlalchemy import create_engine, ForeignKey, Column, String, Integer, CHAR
from sqlalchemy.orm import sessionmaker, declarative_base
Base = declarative_base()
class Persoon(Base):
__tablename__ = "personen"
pid = Column("pid", Integer, primary_key=True)
voornaam = Column("voornaam", String)
achternaam = Column("achternaam", String)
geslacht = Column("geslacht", CHAR)
leeftijd = Column("leeftijd", Integer)
def __init__(self, pid, voornaam, achternaam, geslacht, leeftijd):
self.pid = pid
self.voornaam = voornaam
self.achternaam = achternaam
self.geslacht = geslacht
self.leeftijd = leeftijd
def __repr__(self):
return f"({self.pid} {self.voornaam} {self.achternaam} {self.geslacht} {self.leeftijd})"
class Artikel(Base):
__tablename__ = "artikelen"
aid = Column("aid", Integer, primary_key=True)
omschrijving = Column("omschrijving", String)
eigenaar = Column(Integer, ForeignKey("personen.pid"))
def __init__(self, aid, omschrijving, eigenaar):
self.aid = aid
self.omschrijving = omschrijving
self.eigenaar = eigenaar
def __repr__(self):
return f"({self.omschrijving})"
engine = create_engine("sqlite:///:memory:")
Base.metadata.create_all(bind=engine)
Session = sessionmaker(bind=engine)
session = Session()
p1 = Persoon(101, "Jan", "Jansen", "m", 23)
p2 = Persoon(102, "Maria", "Meester", "f", 62)
p3 = Persoon(103, "Fred", "Willemse", "m", 36)
session.add(p1)
session.add(p2)
session.add(p3)
session.commit()
def scheiding():
print(' -'*25)
results1 = session.query(Persoon).filter(Persoon.achternaam == "Jansen")
scheiding()
print('resultaat achternaam jansen')
for r in results1:
print(r)
scheiding()
results2 = session.query(Persoon).filter(Persoon.voornaam.like("%Ma%"))
print('resultaat voornaam %Ma%')
for r in results2:
print(r)
scheiding()
results3 = session.query(Persoon).filter(Persoon.voornaam.in_(["Jan", "Maria"]))
print('resultaat voornaam Jan of Maria')
for r in results3:
print(r)
scheiding()
a1 = Artikel(101, "Fiets", p1.pid)
a2 = Artikel(102, "Brommer", p2.pid)
a3 = Artikel(103, "Boek", p3.pid)
a4 = Artikel(104, "Radio", p1.pid)
a5 = Artikel(105, "Telefoon", p2.pid)
session.add(a1)
session.add(a2)
session.add(a3)
session.add(a4)
session.add(a5)
session.commit()
results4 = session.query(Artikel).filter(Artikel.eigenaar == Persoon.pid).filter(Persoon.voornaam == "Jan")
print('resultaat eigenaar Jan')
for r in results4:
a = str(r)
ar = a[1:len(a) - 1]
print(ar)
resultaat:
- - - - - - - - - - - - - - - - - - - - - - - - -
resultaat achternaam jansen
(101 Jan Jansen m 23)
- - - - - - - - - - - - - - - - - - - - - - - - -
resultaat voornaam %Ma%
(102 Maria Meester f 62)
- - - - - - - - - - - - - - - - - - - - - - - - -
resultaat voornaam Jan of Maria
(101 Jan Jansen m 23)
(102 Maria Meester f 62)
- - - - - - - - - - - - - - - - - - - - - - - - -
resultaat eigenaar Jan
Fiets
Radio