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

46 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-07 05:42 +0000

1import uuid 1abcdefg

2from typing import Union 1abcdefg

3 

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

5 

6 

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

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

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

10 secret_name: str 1abcdefg

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

12 

13 

14sqlite_file_name = "database.db" 1abcdefg

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

16 

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

18 

19 

20def create_db_and_tables(): 1abcdefg

21 SQLModel.metadata.create_all(engine) 1abcdefg

22 

23 

24def create_hero(): 1abcdefg

25 with Session(engine) as session: 1abcdefg

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

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

28 print(hero) 1abcdefg

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

30 print(hero.id) 1abcdefg

31 session.add(hero) 1abcdefg

32 session.commit() 1abcdefg

33 session.refresh(hero) 1abcdefg

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

35 print(hero) 1abcdefg

36 

37 

38def select_hero(): 1abcdefg

39 with Session(engine) as session: 1abcdefg

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

41 session.add(hero_2) 1abcdefg

42 session.commit() 1abcdefg

43 session.refresh(hero_2) 1abcdefg

44 hero_id = hero_2.id 1abcdefg

45 print("Created hero:") 1abcdefg

46 print(hero_2) 1abcdefg

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

48 print(hero_id) 1abcdefg

49 

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

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

52 print("Selected hero:") 1abcdefg

53 print(selected_hero) 1abcdefg

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

55 print(selected_hero.id) 1abcdefg

56 

57 

58def main() -> None: 1abcdefg

59 create_db_and_tables() 1abcdefg

60 create_hero() 1abcdefg

61 select_hero() 1abcdefg

62 

63 

64if __name__ == "__main__": 1abcdefg

65 main()