Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jrieke/fastapi-csv
🏗️ Create APIs from CSV files within seconds, using fastapi
https://github.com/jrieke/fastapi-csv
api csv csv-api excel fastapi fastapi-template google-sheets python table tabular-data
Last synced: 2 months ago
JSON representation
🏗️ Create APIs from CSV files within seconds, using fastapi
- Host: GitHub
- URL: https://github.com/jrieke/fastapi-csv
- Owner: jrieke
- License: mit
- Created: 2020-12-29T14:39:36.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-05-28T14:54:04.000Z (over 3 years ago)
- Last Synced: 2024-10-23T11:45:16.259Z (2 months ago)
- Topics: api, csv, csv-api, excel, fastapi, fastapi-template, google-sheets, python, table, tabular-data
- Language: Python
- Homepage:
- Size: 230 KB
- Stars: 77
- Watchers: 5
- Forks: 16
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastapi-csv 🏗️
[![PyPi](https://img.shields.io/pypi/v/fastapi-csv)](https://pypi.org/project/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](https://fastapi.tiangolo.com/). 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.![](images/visual-demo.png)
## Installation
```bash
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](people.csv)). To start
an API for it, run one of:```bash
# 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`:
```python
from fastapi_csv import FastAPI_CSVapp = FastAPI_CSV("people.csv")
```Start from terminal just like a normal fastapi app:
```bash
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:```python
# 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:
```python
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.