Quickstart#
A simple CRUD API can be written as given below, noting that the database url should be customised to match your setup.
schema.py#
from quart import g, Quart, request
from quart_db import QuartDB
app = Quart(__name__)
db = QuartDB(app, url="postgresql://username:password@0.0.0.0:5432/db_name")
@app.get("/")
async def get_all():
results = await g.connection.fetch_all("SELECT col1, col2 FROM tbl")
return [{"a": row["col1"], "b": row["col2"]} for row in results]
@app.post("/")
async def create():
data = await request.get_json()
await g.connection.execute(
"INSERT INTO tbl (col1, col2) VALUES (:col1, :col2)",
{"col1": data["a"], "col2": data["b"]},
)
return {}
@app.get("/<int:id>")
async def get(id):
result = await g.connection.fetch_one(
"SELECT col1, col2 FROM tbl WHERE id = :id",
{"id": id},
)
return {"a": result["col1"], "b": result["col2"]}
@app.delete("/<int:id>")
async def delete(id):
await g.connection.execute("DELETE FROM tbl WHERE id = :id", {"id": id})
return {}
@app.put("/<int:id>")
async def update(id):
data = await request.get_json()
await g.connection.execute(
"UPDATE tbl SET col1 = :col1, col2 = :col2 WHERE id = :id",
{"id": id, "col1": data["a"], "col2": data["b"]},
)
return {}