Update code in endpoints/countries.post.py
This commit is contained in:
parent
92e83addf9
commit
138592c8ee
60
endpoints/countries.post.py
Normal file
60
endpoints/countries.post.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
Sure, here's an example of a FastAPI endpoint that adds countries to the database using SQLAlchemy models and Pydantic schemas:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from typing import List
|
||||||
|
from fastapi import FastAPI, Depends
|
||||||
|
from sqlalchemy import Column, Integer, String
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from app.api.models.countries_model import *
|
||||||
|
from app.api.schemas.countries_schema import *
|
||||||
|
from app.api.dependencies.countries_deps import *
|
||||||
|
# SQLAlchemy setup
|
||||||
|
Base = declarative_base()
|
||||||
|
engine = create_engine('sqlite:///countries.db')
|
||||||
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
|
|
||||||
|
# Database model
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
@app.post('/countries', response_model=List[CountryCreate])
|
||||||
|
def create_countries(countries: List[CountryCreate], db: Session = Depends(get_db)):
|
||||||
|
db_countries = []
|
||||||
|
for country_data in countries:
|
||||||
|
country = Country(name=country_data.name, capital=country_data.capital)
|
||||||
|
db.add(country)
|
||||||
|
db_countries.append(country_data)
|
||||||
|
db.commit()
|
||||||
|
return db_countries
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's a breakdown of the code:
|
||||||
|
|
||||||
|
1. We define a SQLAlchemy database model `Country` with fields `id`, `name`, and `capital`.
|
||||||
|
2. We create a Pydantic schema `CountryCreate` to validate the incoming data for creating new countries.
|
||||||
|
3. We define a dependency function `get_db` to provide a database session for each request.
|
||||||
|
4. We create a FastAPI app instance.
|
||||||
|
5. We define the `/countries` endpoint with the `POST` method and `response_model` set to a list of `CountryCreate` objects.
|
||||||
|
6. In the endpoint function `create_countries`, we iterate over the list of `CountryCreate` objects received in the request body.
|
||||||
|
7. For each `CountryCreate` object, we create a new `Country` instance and add it to the database session.
|
||||||
|
8. We commit the changes to the database and return the list of `CountryCreate` objects.
|
||||||
|
|
||||||
|
To use this endpoint, you can send a `POST` request to `/countries` with a JSON payload containing a list of country objects, like this:
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "United States",
|
||||||
|
"capital": "Washington, D.C."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Canada",
|
||||||
|
"capital": "Ottawa"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create new entries in the `countries` table of the database with the provided names and capitals.
|
Loading…
x
Reference in New Issue
Block a user