diff options
| author | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2024-10-21 15:59:35 +0200 |
|---|---|---|
| committer | Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> | 2024-11-13 14:35:36 +0100 |
| commit | c4d992b1d5e5cb26d267fe08a1867575d2f666f5 (patch) | |
| tree | 105a926db9591a31916a3666bb4bc5333ead140c /sources/pyside6/doc/tutorials/finance_manager | |
| parent | 7a1426d6f05adc3334af434623221f4d6dcbfc26 (diff) | |
Finance Manager - Part 2 - Documentation
- This tutorial expands on part1 by integrating SqlAlchemy with PySide6,
by storing the data in a SQLite database.
Pick-to: 6.8
Task-number: PYSIDE-2850
Change-Id: I195149bd861b1fb1a25623a9fe05e42f1e85054c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/doc/tutorials/finance_manager')
| -rw-r--r-- | sources/pyside6/doc/tutorials/finance_manager/index.md | 5 | ||||
| -rw-r--r-- | sources/pyside6/doc/tutorials/finance_manager/part2/part2.md | 116 |
2 files changed, 119 insertions, 2 deletions
diff --git a/sources/pyside6/doc/tutorials/finance_manager/index.md b/sources/pyside6/doc/tutorials/finance_manager/index.md index 6170fc37a..6a2afc6fa 100644 --- a/sources/pyside6/doc/tutorials/finance_manager/index.md +++ b/sources/pyside6/doc/tutorials/finance_manager/index.md @@ -11,7 +11,6 @@ basics of PySide6 and QtQuick, then integrates SQLite for database management us [SQLAlchemy], and finally incorporates [FastAPI] and [Pydantic] for server-side operations and REST API integration. - ### Part 1: Building a Complete PySide6 QtQuick Application - **Introduction**: Overview of the tutorial series and prerequisites. - **Project Setup**: Setting up the development environment and installing necessary packages. @@ -26,6 +25,7 @@ REST API integration. - **Creating Database Models**: Defining database models for finance data. - **CRUD Operations**: Implementing part of the CRUD operations through Create, and Read operations and connecting them to the PySide6 application. +- For more details, see {ref}`tutorial_financemanager_parttwo`. ### Part 3: Using FastAPI and Pydantic for Server-Side Operations - **Setting Up FastAPI**: Installing FastAPI and Uvicorn, and creating a basic FastAPI application. @@ -34,7 +34,7 @@ REST API integration. - **Connecting FastAPI with PySide6**: Making HTTP requests from the PySide6 application and displaying data fetched from the API in the UI. -Each parts ends with instruction on how to deploy the application using {ref}`pyside6-deploy`. +Each part ends with instructions on how to deploy the application using {ref}`pyside6-deploy`. This structured approach ensures that readers can follow along and understand each concept before moving on to the next one, resulting in a robust and scalable finance manager application. @@ -47,3 +47,4 @@ moving on to the next one, resulting in a robust and scalable finance manager ap :hidden: part1/part1.md +part2/part2.md diff --git a/sources/pyside6/doc/tutorials/finance_manager/part2/part2.md b/sources/pyside6/doc/tutorials/finance_manager/part2/part2.md new file mode 100644 index 000000000..d8de3a4a4 --- /dev/null +++ b/sources/pyside6/doc/tutorials/finance_manager/part2/part2.md @@ -0,0 +1,116 @@ +(tutorial_financemanager_parttwo)= + +# Finance Manager Tutorial - Part 2 + +In this part of the tutorial, we will extend our finance manager app to store the expenses in a +SQLite database using the [SQLAlchemy] Python package. This will allow us to +persist the data and retrieve it even after the application is closed. + +To download the complete source code for this tutorial, visit +{ref}`example_tutorials_finance_manager_part2`. + +## Prerequisites + +Before we begin, make sure you have [SQLAlchemy] installed within your Python environment. + +You can install it using pip: + +```bash +pip install sqlalchemy +``` + +## Project Structure + +The overall project structure is the same as in the [previous part](tutorial_financemanager_partone) +of the tutorial. + +## Let's Get Started! + +### Creating the Database + +The first step is to create a `database.py` that takes care of creating and initializing the +database. This Python code will define the database schema and provide a session object to interact +with the database. The database is initialized with a single table named `finances` with the same +initial data we used in the [part one](tutorial_financemanager_partone) of the tutorial. + +<details> +<summary class="prominent-summary">database.py</summary> + +```{literalinclude} ../../../../../../../../../examples/tutorials/finance_manager/part2/database.py +--- +language: python +caption: database.py +linenos: true +--- +``` +</details> + +> Note: The database called `finances.db` will be created in the directory specified by the +`FINANCE_MANAGER_DB_PATH` environment variable if it is set. If the environment variable is not set, +the database will be created in the appropriate application data directory based on the operating +system. + +### Updating the FinanceModel Class + +Next, we need to update the FinanceModel class to interact with the database. + +In `financemodel.py`, make the following highlighted changes to load the existing expenses from the +database into the model, and also save new expenses to the database. + +<details> +<summary class="prominent-summary">financemodel.py</summary> + +```{literalinclude} ../../../../../../../../../examples/tutorials/finance_manager/part2/financemodel.py +--- +language: python +caption: Finance model class definition +linenos: true +emphasize-lines: 12, 40-50, 93-101 +--- +``` + +## Updating the Main Application + +Finally, we need to update the `main.py` file to initialize the database and use the `FinanceModel` + +<details> +<summary class="prominent-summary">main.py</summary> + +```{literalinclude} ../../../../../../../../../examples/tutorials/finance_manager/part2/main.py +--- +language: python +caption: main.py +linenos: true +emphasize-lines: 11, 15 +--- +``` +</details> + +The rest of the code remains the same as in the previous part of the tutorial. + +### Running the Application + +To run the application, execute the `main.py` file using Python: + +```bash +python main.py +``` + +### Deploying the Application + +To deploy the application, follow the same steps as in the +[previous part](tutorial_financemanager_partone) of the tutorial. + +## Summary + +In this part of the tutorial, we have extended the finance manager app by integrating a database +using [SQLAlchemy]. This allows us to store the expenses and retrieve them even after the +application is closed. + +In the next part of the tutorial, we will continue to enhance the application by using +[FastApi] and [PyDantic] to create a REST API for the finance manager app, and move the +database to a separate server. + +[SQLalchemy]: https://www.sqlalchemy.org/ +[FastApi]: https://fastapi.tiangolo.com/ +[PyDantic]: https://pydantic-docs.helpmanual.io/ |
