---
title: "Wrap up"
description: "Review what you built in the Python SDK and Voyager tutorial and clean up your local environment."
---

# Wrap up

> For the complete documentation index see: [llms.txt](https://aerospike.com/docs/llms.txt)
> 
> All documentation pages available in markdown.

You connected a FastAPI retail application to Aerospike Database, implemented the data-access layer with the Python SDK, and used Voyager to inspect and edit live records.

## Outcomes

You now have a fully working retail application backed by Aerospike. Specifically:

-   `store_product`, `get_product`, `query`, `advanced_search`, `get_cart`, and `add_to_cart` are all implemented against the live cluster.
-   The `add_to_cart` flow uses a check-and-set update against a nested map document to make concurrent updates safe.
-   You can browse, filter, and edit the underlying data in Voyager.

If you want to compare your implementation to a reference, look at the `key_value_service_new_client_answers.py` module in the sample repository.

## Clean up

Stop the FastAPI application and the Aerospike Database container so they do not occupy ports `8080` and `3000` to `3003` after you finish.

1.  In the terminal that is running the FastAPI application, press `Ctrl+C` to stop the server.
    
2.  From the `aerospike-client-sdk-workshop` repository root, stop and remove the Aerospike container.
    
    Terminal window
    
    ```shell
    docker compose down
    ```
    
    ```plaintext
    [+] Running 2/2
    
     ✔ Container aerospike-workshop                  Removed
    
     ✔ Network aerospike-client-sdk-workshop_default Removed
    ```
    
    Example response
    
    This command stops and removes the `aerospike-workshop` container and its network. The named volume `aerospike-client-sdk-workshop_aerospike-data` remains, so the records you wrote in this tutorial are still present the next time you run `docker compose up -d`.
    
3.  (Optional) Delete the data volume to start fresh next time.
    
    Terminal window
    
    ```shell
    docker compose down --volumes
    ```
    
    ::: caution
    Adding `--volumes` removes all records from the local database. Run this command only when you are sure you do not need the tutorial data again.
    :::
    
4.  (Optional) Disconnect Voyager from the local cluster, or remove the cluster entry, so it does not try to reconnect when you next launch Voyager.
    

::: undefined
-   I’ve reviewed what this tutorial accomplished.
-   I’ve stopped the FastAPI application and Aerospike container.
:::

Share

Congratulations on completing this tutorial! Share your achievement with the world and let everyone know about your newly acquired skills.

[](https://www.linkedin.com/feed/?shareActive&mini=true&text=I%20built%20a%20FastAPI%20retail%20app%20with%20the%20Aerospike%20Python%20SDK%20and%20Aerospike%20Voyager.%0A%0ADict-based%20writes%2C%20fluent%20queries%2C%20AEL%20filters%2C%20and%20check-and-set%20updates%20on%20nested%20map%20records%2C%20then%20inspected%20and%20edited%20the%20data%20live%20in%20Voyager.%0A%0A%23Aerospike%20%23Python%20%23FastAPI%20%23Voyager%20%23DevTools%0A%0Ahttps%3A%2F%2Faerospike.com%2Fdocs%2Fdatabase%2Flearn%2Ftutorials%2Fget-started-with-aerospike-python-sdk-and-voyager "Post to LinkedIn")[](https://bsky.app/intent/compose?text=I%20built%20a%20FastAPI%20retail%20app%20with%20the%20Aerospike%20Python%20SDK%20and%20Aerospike%20Voyager.%0A%0ADict-based%20writes%2C%20fluent%20queries%2C%20AEL%20filters%2C%20and%20check-and-set%20updates%20on%20nested%20map%20records%2C%20then%20inspected%20and%20edited%20the%20data%20live%20in%20Voyager.%0A%0A%23Aerospike%20%23Python%20%23FastAPI%20%23Voyager%20%23DevTools%0A%0Ahttps%3A%2F%2Faerospike.com%2Fdocs%2Fdatabase%2Flearn%2Ftutorials%2Fget-started-with-aerospike-python-sdk-and-voyager "Post to BlueSky")[](https://twitter.com/intent/tweet?text=I%20built%20a%20FastAPI%20retail%20app%20with%20the%20Aerospike%20Python%20SDK%20and%20Aerospike%20Voyager.%0A%0ADict-based%20writes%2C%20fluent%20queries%2C%20AEL%20filters%2C%20and%20check-and-set%20updates%20on%20nested%20map%20records%2C%20then%20inspected%20and%20edited%20the%20data%20live%20in%20Voyager.%0A%0A%23Aerospike%20%23Python%20%23FastAPI%20%23Voyager%20%23DevTools%0A%0Ahttps%3A%2F%2Faerospike.com%2Fdocs%2Fdatabase%2Flearn%2Ftutorials%2Fget-started-with-aerospike-python-sdk-and-voyager "Post to Twitter")

::: undefined
-   Read about [Aerospike client policies](https://aerospike.com/docs/database/learn/policies) to compare the new SDK’s `Behavior` model with the legacy client’s per-call policy objects.
    
-   Read about [secondary indexes](https://aerospike.com/docs/database/manage/namespace/secondary-index) to understand how the SDK’s `where()` clause picks the most selective index for your AEL expression.
    
-   Read the [Python sync API](https://aerospike.com/docs/develop/client/sdk/python-sync) if you prefer blocking calls instead of `async`/`await`.
:::

[Previous  
Implement the shopping cart](https://aerospike.com/docs/database/learn/tutorials/get-started-with-aerospike-python-sdk-and-voyager/step/2/part/2/shopping-cart)