Create APIs from CSV files within seconds, using fastapi
Project description
fastapi-csv 🏗️
Create APIs from CSV files within seconds, using fastapi.
This is a Python package to create APIs from CSV files, using a lightweight & fully customizable wrapper around fastapi. Endpoints and query parameters are auto-generated based on the column names and data types in the CSV file. Its data is written to a (temporary) sqlite database, so the API is blazing fast even for huge files.
Installation
pip install fastapi-csv
How to use it
1. From the command line
There's a simple CSV file in this repo for testing (people.csv). To start an API for it, run one of:
# from file
fastapi-csv people.csv
# directly from URL
fastapi-csv https://raw.githubusercontent.com/jrieke/fastapi-csv/main/people.csv
Either command should start a fastapi instance, which has auto-generated endpoints and
query parameters based on the CSV file. Here, the API has an endpoint /people
(same name as the file), which can be queried using the CSV's column names, e.g. you can
do:
/people?first_name=Rachel
/people?last_name=Johnson&age=48
Additionally, fastapi-csv creates some convenience query parameters for specific data types, e.g.
/people&age_greaterThan=18
(for int/float)/people&age_lessThanEqual=18
(for int/float)/people&first_name_contains=ach
(for string, watch out: this one is case sensitive!)
Check out the API docs for more information and an interactive demo, they should be at http://127.0.0.1:8000/docs
2. From Python
Create a file my_file.py
:
from fastapi_csv import FastAPI_CSV
app = FastAPI_CSV("people.csv")
Start from terminal just like a normal fastapi app:
uvicorn my_file:app
Extending the API
The cool thing: FastAPI_CSV
is just a wrapper around FastAPI
. Therefore, you can do
all the stuff you can do with a normal fastapi instance, e.g. add a new endpoint:
# Add a new endpoint, just like in normal fastapi
@app.get("/hello")
def hello(self):
return {"Hello:", "World"}
In the future, you will also be able to easily modify existing endpoints that were generated from the CSV file.
Updating the data
If your CSV file changes, you can update the API data with:
app.update_database()
Note that this will only update the data, not the API endpoints or query parameters.
To do that, you need to create a new FastAPI_CSV
instance or re-start uvicorn.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fastapi-csv-0.1.0.tar.gz
.
File metadata
- Download URL: fastapi-csv-0.1.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d6bc96948872bcdcd5a02ce0c99664344ab27a72c8ae1c9e690c3fcb9ccfa5e |
|
MD5 | c8bc7bc19b39e33db407810edf5dff8b |
|
BLAKE2b-256 | 9e19442a3810ed557a7fe0d981e64d63b1973663640b015dfe997e974fddb9c2 |
File details
Details for the file fastapi_csv-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: fastapi_csv-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba6391bad9ce636ca6ef85bf1608cbf763702202916b4cbef4bd2c32e88a2d45 |
|
MD5 | d148999d1a820e01d4975fd181fdaabd |
|
BLAKE2b-256 | d7104e33e813fae962ba8102d11d39a35a1c859b7a5b8e3ce0b94e585e0bd18c |