https://github.com/oracle-quickstart/fastapi-oracle-database-example
https://github.com/oracle-quickstart/fastapi-oracle-database-example
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/oracle-quickstart/fastapi-oracle-database-example
- Owner: oracle-quickstart
- License: apache-2.0
- Created: 2023-08-02T07:12:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-09T13:15:45.000Z (over 2 years ago)
- Last Synced: 2025-04-03T16:03:53.699Z (9 months ago)
- Language: Python
- Size: 53.7 KB
- Stars: 9
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FastAPI Oracle Database Example
This is an example of a Python FastAPI Web Service that interacts with Oracle Database.

## Prerequisites
- Python 3
- Oracle Database connection details
- curl (optional)
## Installation
##### 1. Clone this repository:
```
git clone https://github.com/oracle-quickstart/fastapi-oracle-database-example.git
cd fastapi-oracle-database-example
```
##### 2. Install the required packages using pip:
```
python3 -m pip install -r requirements.txt
```
##### 3. Configuration
Set database username and connection string environment variables:
PYTHON_USERNAME
PYTHON_CONNECTSTRING
##### Example:
###### Local Oracle DB
```
export PYTHON_USERNAME=cj
export PYTHON_CONNECTSTRING=localhost/orclpdb1
```
###### Autonomous Oracle DB
```
export PYTHON_USERNAME=admin
export PYTHON_CONNECTSTRING='(description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.ap-sydney-1.oraclecloud.com))(connect_data=(service_name=gxxxxxx_yxxxx_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))'
```
##### 4. Running the FastAPI App
To run the FastAPI app, use the following command:
```
uvicorn fapi:app --reload
```
If the uvicorn binary is not in your PATH, you may need to specify the full
path, for example:
```
$HOME/Library/Python/3.9/bin/uvicorn fapi:app --reload
```
Enter your database user password when prompted.
The app will be accessible at http://localhost:8000 or http://YOUR_LOCAL_IP:8000
##### 5. API Endpoints
Endpoints are shown at http://localhost:8000/docs
They are:
- `POST`: to create data
- `GET`: to read data
- `PUT`: to update data
- `DELETE`: to delete data
Alternative documentation is at http://localhost:8000/redoc
To use the FastAPI app, you can use the 'Try it out' buttons on
http://localhost:8000/docs or alternatively use a command line tool such as
`curl`.
###### Create an order:
```
curl -X 'POST' \
'http://localhost:8000/orders/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"order_id": 1,
"product_name": "New Product",
"quantity": 10
}'
```
###### Update an order:
```
curl -X 'PUT' \
'http://localhost:8000/orders/1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"order_id": 1,
"product_name": "Updated Product",
"quantity": 20
}'
```
###### Retrieve an order by ID:
```
curl -X 'GET' \
'http://localhost:8000/orders/1' \
-H 'accept: application/json'
```
###### Delete an order:
```
curl -X 'DELETE' \
'http://localhost:8000/orders/1' \
-H 'accept: application/json'
```
##### 6. Docs
With FastAPI you get OpenAPI docs generated automatically if you go to path ```/docs```
```http://127.0.0.1:8000/docs```

```http://127.0.0.1:8000/redoc```

## More on REST APIs for Oracle
Oracle Database also provides native REST APIs capabilities. To learn more, see :
Product Page : https://www.oracle.com/database/technologies/appdev/rest.html
Hands-on LiveLab : https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=815
## Contributing
This project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)
## Security
Please consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process
## License
Copyright (c) 2023 Oracle and/or its affiliates.
Released under the Apache License version 2.0 as shown at
.