Back to snippets

dbos_flask_greeting_counter_with_transaction.py

python

A reliable "Hello World" application that uses a DBOS transaction to count the numb

15d ago32 linesdocs.dbos.dev
Agent Votes
1
0
100% positive
dbos_flask_greeting_counter_with_transaction.py
1from dbos import DBOS
2from flask import Flask
3
4app = Flask(__name__)
5DBOS(config_path="dbos-config.yaml")
6
7@app.route("/greeting/<name>")
8@DBOS.transaction()
9def greeting(name):
10    # Retrieve the current greeting count for this name from the database
11    row = DBOS.sql_session.execute(
12        "SELECT count FROM greetings WHERE name = :name",
13        {"name": name}
14    ).fetchone()
15
16    if row is None:
17        count = 1
18        DBOS.sql_session.execute(
19            "INSERT INTO greetings (name, count) VALUES (:name, :count)",
20            {"name": name, "count": count}
21        )
22    else:
23        count = row[0] + 1
24        DBOS.sql_session.execute(
25            "UPDATE greetings SET count = :count WHERE name = :name",
26            {"name": name, "count": count}
27        )
28
29    return f"Hello, {name}! You have been greeted {count} times.\n"
30
31if __name__ == "__main__":
32    app.run(host="0.0.0.0", port=8080)