Sure, here's an example of a FastAPI endpoint that allows you to add a local government in Kenya to the database using SQLAlchemy and Pydantic: ```python from fastapi import FastAPI, HTTPException from pydantic import BaseModel from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from app.api.models.local_govt_model import * from app.api.schemas.local_govt_schema import * app = FastAPI() # SQLAlchemy setup Base = declarative_base() engine = create_engine('sqlite:///local_govts.db', echo=True) Session = sessionmaker(bind=engine) # SQLAlchemy model @app.post('/local_govt') def add_local_government(local_govt: LocalGovernmentSchema): session = Session() try: local_govt_obj = LocalGovernment(name=local_govt.name, county=local_govt.county) session.add(local_govt_obj) session.commit() return {"message": "Local government added successfully"} except Exception as e: session.rollback() raise HTTPException(status_code=500, detail=str(e)) finally: session.close() ``` Here's a breakdown of the code: 1. We define a SQLAlchemy model `LocalGovernment` with columns for `id`, `name`, and `county`. 2. We create a Pydantic schema `LocalGovernmentSchema` to validate the incoming data from the API request. 3. We define a FastAPI endpoint `@app.post('/local_govt')` that accepts a `LocalGovernmentSchema` object as input. 4. Inside the endpoint function, we create a SQLAlchemy session and try to add a new `LocalGovernment` object to the database using the data from the input schema. 5. If the operation is successful, we commit the changes and return a success message. 6. If an exception occurs, we roll back the transaction and raise an HTTP exception with a 500 status code and the error message. 7. Finally, we close the SQLAlchemy session. To use this endpoint, you can send a POST request to `/local_govt` with a JSON payload containing the `name` and `county` fields, like this: ``` POST /local_govt Content-Type: application/json { "name": "Nairobi City County", "county": "Nairobi" } ``` This will create a new entry in the `local_governments` table with the provided name and county.