Skip to main content

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.

Metadata

Release files for fastapi-csv 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapi-csv 0.1.0
File Size Uploaded
fastapi-csv-0.1.0.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-csv 0.1.0
File Interpreter ABI Platform
fastapi_csv-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.1 kB

Release files / fastapi-csv-0.1.0.tar.gz

Download URL fastapi-csv-0.1.0.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4d6bc96948872bcdcd5a02ce0c99664344ab27a72c8ae1c9e690c3fcb9ccfa5e
BLAKE2b-256 checksum
How to use checksums
9e19442a3810ed557a7fe0d981e64d63b1973663640b015dfe997e974fddb9c2
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / fastapi_csv-0.1.0-py3-none-any.whl

Download URL fastapi_csv-0.1.0-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba6391bad9ce636ca6ef85bf1608cbf763702202916b4cbef4bd2c32e88a2d45
BLAKE2b-256 checksum
How to use checksums
d7104e33e813fae962ba8102d11d39a35a1c859b7a5b8e3ce0b94e585e0bd18c
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page