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

45 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-03-24 00:02 +0000

1import uuid 1abcd

2 

3from sqlmodel import Field, Session, SQLModel, create_engine, select 1abcd

4 

5 

6class Hero(SQLModel, table=True): 1abcd

7 id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) 1abcd

8 name: str = Field(index=True) 1abcd

9 secret_name: str 1abcd

10 age: int | None = Field(default=None, index=True) 1abcd

11 

12 

13sqlite_file_name = "database.db" 1abcd

14sqlite_url = f"sqlite:///{sqlite_file_name}" 1abcd

15 

16engine = create_engine(sqlite_url, echo=True) 1abcd

17 

18 

19def create_db_and_tables(): 1abcd

20 SQLModel.metadata.create_all(engine) 1abcd

21 

22 

23def create_hero(): 1abcd

24 with Session(engine) as session: 1abcd

25 hero = Hero(name="Deadpond", secret_name="Dive Wilson") 1abcd

26 print("The hero before saving in the DB") 1abcd

27 print(hero) 1abcd

28 print("The hero ID was already set") 1abcd

29 print(hero.id) 1abcd

30 session.add(hero) 1abcd

31 session.commit() 1abcd

32 session.refresh(hero) 1abcd

33 print("After saving in the DB") 1abcd

34 print(hero) 1abcd

35 

36 

37def select_hero(): 1abcd

38 with Session(engine) as session: 1abcd

39 hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador") 1abcd

40 session.add(hero_2) 1abcd

41 session.commit() 1abcd

42 session.refresh(hero_2) 1abcd

43 hero_id = hero_2.id 1abcd

44 print("Created hero:") 1abcd

45 print(hero_2) 1abcd

46 print("Created hero ID:") 1abcd

47 print(hero_id) 1abcd

48 

49 statement = select(Hero).where(Hero.id == hero_id) 1abcd

50 selected_hero = session.exec(statement).one() 1abcd

51 print("Selected hero:") 1abcd

52 print(selected_hero) 1abcd

53 print("Selected hero ID:") 1abcd

54 print(selected_hero.id) 1abcd

55 

56 

57def main() -> None: 1abcd

58 create_db_and_tables() 1abcd

59 create_hero() 1abcd

60 select_hero() 1abcd

61 

62 

63if __name__ == "__main__": 1abcd

64 main()