#!/usr/bin/env python3
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.orm import mapper
class Base(DeclarativeBase):
pass
class MyFriend(Base):
__tablename__ = 'user'
id: Mapped[int] = mapped_column(primary_key = True)
name: Mapped[str] = mapped_column(String(30))
old: Mapped[int] = mapped_column(primary_key = True)
address: Mapped[str] = mapped_column(String(30))
def __repr__(self):
return f'User(id={self.id!r}, name={self.name!r}, id={self.id!r}, old={self.old!r}, address={self.address!r})'
engine = create_engine("sqlite://", echo = True)
Base.metadata.create_all(engine)
with Session(engine) as session:
Yamada = MyFriend(
id = 1,
name = 'Yamada',
old = 19,
address = 'Tokyo',
)
Mori = MyFriend(
id = 3,
name = 'Mori',
old = 19,
address = 'Kyoto',
)
Ueda = MyFriend(
id = 5,
name = 'Ueda',
old = 19,
address = 'Tokyo',
)
Mitsui = MyFriend(
id = 6,
name = 'Mitsui',
old = 19,
address = 'Nagoya',
)
session.add_all([Yamada, Mori, Ueda, Mitsui])
session.commit()
[print(friend) for friend in session.scalars(select(MyFriend))]
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwpmcm9tIHNxbGFsY2hlbXkgaW1wb3J0ICoKZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgKgpmcm9tIHNxbGFsY2hlbXkub3JtIGltcG9ydCBtYXBwZXIKCmNsYXNzIEJhc2UoRGVjbGFyYXRpdmVCYXNlKToKICAgIHBhc3MKCmNsYXNzIE15RnJpZW5kKEJhc2UpOgogICAgX190YWJsZW5hbWVfXyA9ICd1c2VyJwoKICAgIGlkOiBNYXBwZWRbaW50XSA9IG1hcHBlZF9jb2x1bW4ocHJpbWFyeV9rZXkgPSBUcnVlKQogICAgbmFtZTogTWFwcGVkW3N0cl0gPSBtYXBwZWRfY29sdW1uKFN0cmluZygzMCkpCiAgICBvbGQ6IE1hcHBlZFtpbnRdID0gbWFwcGVkX2NvbHVtbihwcmltYXJ5X2tleSA9IFRydWUpCiAgICBhZGRyZXNzOiBNYXBwZWRbc3RyXSA9IG1hcHBlZF9jb2x1bW4oU3RyaW5nKDMwKSkKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYnVXNlcihpZD17c2VsZi5pZCFyfSwgbmFtZT17c2VsZi5uYW1lIXJ9LCBpZD17c2VsZi5pZCFyfSwgb2xkPXtzZWxmLm9sZCFyfSwgYWRkcmVzcz17c2VsZi5hZGRyZXNzIXJ9KScKCmVuZ2luZSA9IGNyZWF0ZV9lbmdpbmUoInNxbGl0ZTovLyIsIGVjaG8gPSBUcnVlKQpCYXNlLm1ldGFkYXRhLmNyZWF0ZV9hbGwoZW5naW5lKQoKd2l0aCBTZXNzaW9uKGVuZ2luZSkgYXMgc2Vzc2lvbjoKICAgIFlhbWFkYSA9IE15RnJpZW5kKAogICAgICAgIGlkID0gMSwKICAgICAgICBuYW1lID0gJ1lhbWFkYScsCiAgICAgICAgb2xkID0gMTksCiAgICAgICAgYWRkcmVzcyA9ICdUb2t5bycsCiAgICAgICAgKQogICAgTW9yaSA9IE15RnJpZW5kKAogICAgICAgIGlkID0gMywKICAgICAgICBuYW1lID0gJ01vcmknLAogICAgICAgIG9sZCA9IDE5LAogICAgICAgIGFkZHJlc3MgPSAnS3lvdG8nLAogICAgICAgICkKICAgIFVlZGEgPSBNeUZyaWVuZCgKICAgICAgICBpZCA9IDUsCiAgICAgICAgbmFtZSA9ICdVZWRhJywKICAgICAgICBvbGQgPSAxOSwKICAgICAgICBhZGRyZXNzID0gJ1Rva3lvJywKICAgICAgICApCiAgICBNaXRzdWkgPSBNeUZyaWVuZCgKICAgICAgICBpZCA9IDYsCiAgICAgICAgbmFtZSA9ICdNaXRzdWknLAogICAgICAgIG9sZCA9IDE5LAogICAgICAgIGFkZHJlc3MgPSAnTmFnb3lhJywKICAgICAgICApCiAgICBzZXNzaW9uLmFkZF9hbGwoW1lhbWFkYSwgTW9yaSwgVWVkYSwgTWl0c3VpXSkKICAgIHNlc3Npb24uY29tbWl0KCkKICAgIFtwcmludChmcmllbmQpIGZvciBmcmllbmQgaW4gc2Vzc2lvbi5zY2FsYXJzKHNlbGVjdChNeUZyaWVuZCkpXQo=