Skip to main content

Create and Run migration for fastapi project

Project description

FastAPI-GENE

A lightweight CLI tool to scaffold fastapi projects, run migrations and migrate migration files.

Installation

Create and activate a virtual environment and then install fastapi-gene:

$ pip install fastapi-gene

Usage

Here are some examples of what fastapi_gene can do:

fastapi_gene createproject main

It creates a fastapi project named main along with it's subfolder models,schema,api and file app.py inside it.

main/
├── app.py
└── main/
    ├── __init__.py
    ├── api/
    │   ├── __init__.py
    │   └── item.py
    ├── models/
    │   └── __init__.py
    └── schema/
        ├── __init__.py
        └── item.py

To run the project just change path to main and run fastapi dev.now, you can navigate to http://127.0.0.1:8000/docs/ to see autogenerated items endpoints but make sure to install fastapi on your enviroment.😊

fastapi_gene createuser fastapi-users[sqlalchemy]

It creates file and add user table on it as well as map endpoint into your project automatically from fastapi-users[sqlalchemy] module but project structure should be maintained to work as smoothly.

  • Supported modules are:
    • fastapi-users[sqlalchemy]
    • fastapi-users[sqlalchemy,oauth]
    • fastapi-users[beanie]
    • fastapi-users[beanie,oauth]

Now, File structure changed to

main/
├── app.py
└── main/
    ├── __init__.py
    ├── api/
    │   ├── __init__.py
    │   |── item.py
    |   └── users.py    #created
    |
    ├── models/
    │   |── __init__.py
    |   |── db.py       #created
    |   └── users.py    #created
    |
    └── schema/
        ├── __init__.py
        |── item.py
        └── users.py    #created

// To reflect users endpoint on project include `user_router` in `app.py` as
# app.py

from fastapi import FastAPI
from main.api import item_router,user_router

app = FastAPI()


app.include_router(item_router)
app.include_router(user_router)

fastapi_gene makemigrations

fastapi_gene makemigrations init

Migrations directory wasnot created to store migrations file. To create that, you should run above command in your terminal and it creates migrations directory named alembic. It works same as alembic init alembic but you can also provide custom name as fastapi_gene makemigrations init --name=migrations

main/
├── app.py
├── alembic/...  #created
├── alembic.ini  #created
└── main/...

// some manual setup

# main/models/__init__.py
from .db import Base

# alembic/env.py
from main.models import Base

...

target_metadata = Base.metadata
config.set_main_option("sqlalchemy.url","sqlite:///./fastgen.db")

fastapi_gene makemigrations -m "create user tables"

After importing Base from user model and sqlalchemy_url inside env.py of migrations directory, you can run this command which will create the migration file with named randomnumber_create_user_tables.py inside version directory of migrations. It works same as alembic revision --autogenerate -m "create user tables".

fastapi_gene migrate up

It applies all migrations upto latest version. It works same as alembic upgrade head. By default, it passes head revision but you can provide desire revision as fastapi_gene migrate up revision_id

fastapi_gene migrate down

It reverts all migrations, bringing the database back to its initial empty state. It works same as alembic downgrade base. By default, it passes base revision but you can provide desire revision as fastapi_gene migrate down revision_id

Notes

  • command: To know all about the commands fastapi_gene --help
  • specific-command: For the information of specific commands fastapi_gene "command_name" --help

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_gene-0.0.8.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_gene-0.0.8-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_gene-0.0.8.tar.gz.

File metadata

  • Download URL: fastapi_gene-0.0.8.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.1

File hashes

Hashes for fastapi_gene-0.0.8.tar.gz
Algorithm Hash digest
SHA256 cbaef925d5070ee8ab49320e1522086e02b7b0c5b623617dd811d57fd54bc5fb
MD5 1b6e081b44f77b458eaab880d0d28103
BLAKE2b-256 0b090aad916bd12e8b0a05232d5896adb2415ae935935715618ee438f027540c

See more details on using hashes here.

File details

Details for the file fastapi_gene-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: fastapi_gene-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.1

File hashes

Hashes for fastapi_gene-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f7416176a6ac2e4ff22df88d83f4d4ead3107165b8b36a5471f658a34d00d68c
MD5 7b46a9ded0eee80a5757eaae764a3d2f
BLAKE2b-256 9259246505eccadabe85ba410d6827a95e002e0a5800a3659d106b4e94312b18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page