Coverage for docs_src / tutorial / transaction / tutorial000.py: 86%
44 statements
« prev ^ index » next coverage.py v7.12.0, created at 2025-12-07 08:37 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2025-12-07 08:37 +0000
1import os 1abcdef
2from typing import Optional 1abcdef
4from mongodb_odm import Document, connect 1abcdef
5from pymongo.errors import OperationFailure 1abcdef
8class Player(Document): 1abcdef
9 name: str 1abcdef
10 country_code: str 1abcdef
11 rating: Optional[int] = None 1abcdef
14def create_documents(): 1abcdef
15 with Document.start_session() as session: 1abcdef
16 with session.start_transaction(): 1abcdef
17 try: 1abcdef
18 Player( 1abcdef
19 name="Pelé",
20 country_code="BRA",
21 ).create(session=session)
23 maradona = Player(name="Diego Maradona", country_code="ARG") 1abcdef
24 maradona.create(session=session) 1abcdef
25 except OperationFailure:
26 session.abort_transaction()
29def update_documents(): 1abcdef
30 with Document.start_session() as session: 1abcdef
31 with session.start_transaction(): 1abcdef
32 try: 1abcdef
33 pele = Player.get({Player.name: "Pelé"}) 1abcdef
34 pele.rating = 98 1abcdef
35 pele.update(session=session) 1abcdef
37 maradona = Player.get({Player.name: "Diego Maradona"}) 1abcdef
38 pele.rating = 97 1abcdef
39 maradona.update(session=session) 1abcdef
40 except OperationFailure:
41 session.abort_transaction()
44def delete_documents(): 1abcdef
45 with Document.start_session() as session: 1abcdef
46 with session.start_transaction(): 1abcdef
47 try: 1abcdef
48 pele = Player.get({Player.name: "Pelé"}) 1abcdef
49 pele.delete(session=session) 1abcdef
51 maradona = Player.get({Player.name: "Diego Maradona"}) 1abcdef
52 maradona.delete(session=session) 1abcdef
53 except OperationFailure:
54 session.abort_transaction()
57def main(): 1abcdef
58 # Use a database that has a replica set.
59 connect(os.environ.get("MONGO_URL", "mongodb://localhost:27017/testdb")) 1abcdef
61 create_documents() 1abcdef
62 update_documents() 1abcdef
63 delete_documents() 1abcdef
66if __name__ == "__main__": 1abcdef
67 main()