Coverage for docs_src / advanced / uuid / tutorial001_py39.py: 100%

46 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-01-06 21:09 +0000

1import uuid 1jklmnopqr

2from typing import Union 1jklmnopqr

3 

4from sqlmodel import Field, Session, SQLModel, create_engine, select 1jklmnopqr

5 

6 

7class Hero(SQLModel, table=True): 1jklmnopqr

8 id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) 1jklmnopqr

9 name: str = Field(index=True) 1jklmnopqr

10 secret_name: str 1jklmnopqr

11 age: Union[int, None] = Field(default=None, index=True) 1jklmnopqr

12 

13 

14sqlite_file_name = "database.db" 1jklmnopqr

15sqlite_url = f"sqlite:///{sqlite_file_name}" 1jklmnopqr

16 

17engine = create_engine(sqlite_url, echo=True) 1jklmnopqr

18 

19 

20def create_db_and_tables(): 1jklmnopqr

21 SQLModel.metadata.create_all(engine) 1abcdefghi

22 

23 

24def create_hero(): 1jklmnopqr

25 with Session(engine) as session: 1abcdefghi

26 hero = Hero(name="Deadpond", secret_name="Dive Wilson") 1abcdefghi

27 print("The hero before saving in the DB") 1abcdefghi

28 print(hero) 1abcdefghi

29 print("The hero ID was already set") 1abcdefghi

30 print(hero.id) 1abcdefghi

31 session.add(hero) 1abcdefghi

32 session.commit() 1abcdefghi

33 session.refresh(hero) 1abcdefghi

34 print("After saving in the DB") 1abcdefghi

35 print(hero) 1abcdefghi

36 

37 

38def select_hero(): 1jklmnopqr

39 with Session(engine) as session: 1abcdefghi

40 hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador") 1abcdefghi

41 session.add(hero_2) 1abcdefghi

42 session.commit() 1abcdefghi

43 session.refresh(hero_2) 1abcdefghi

44 hero_id = hero_2.id 1abcdefghi

45 print("Created hero:") 1abcdefghi

46 print(hero_2) 1abcdefghi

47 print("Created hero ID:") 1abcdefghi

48 print(hero_id) 1abcdefghi

49 

50 statement = select(Hero).where(Hero.id == hero_id) 1abcdefghi

51 selected_hero = session.exec(statement).one() 1abcdefghi

52 print("Selected hero:") 1abcdefghi

53 print(selected_hero) 1abcdefghi

54 print("Selected hero ID:") 1abcdefghi

55 print(selected_hero.id) 1abcdefghi

56 

57 

58def main() -> None: 1jklmnopqr

59 create_db_and_tables() 1abcdefghi

60 create_hero() 1abcdefghi

61 select_hero() 1abcdefghi

62 

63 

64if __name__ == "__main__": 1jklmnopqr

65 main()