Skip to content

acifani/flask-sqla2api

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Flask-SQLA2api

https://travis-ci.org/acifani/flask-sqla2api.svg?branch=master https://coveralls.io/repos/github/acifani/flask-sqla2api/badge.svg?branch=master

Flask middleware that creates a simple Flask API CRUD REST endpoint based on a SQLAlchemy model definition.

Basic usage

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_sqla2api import SQLA2api

# Init app and DB
app = Flask(__name__)
db = SQLAlchemy(app)

# Setup a simple SQLAlchemy model
class Entry(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

# Init Flask-sqla2api
api = SQLA2api([Entry], self.db)
api.append_blueprints(app)

The previous tiny app will create the following endpoints

URL HTTP Method Action
/entry GET Get all entries
/entry POST Create new entry
/entry/<id> GET Get a single entry
/entry/<id> PUT Edit existing entry
/entry/<id> DELETE Delete existing entry

Generate single blueprint

If you want more control over your blueprints you can generate it and append it yourself to your app.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_sqla2api import generate_blueprint

# Init app and DB
app = Flask(__name__)
db = SQLAlchemy(app)

# Setup a simple SQLAlchemy model
class Entry(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))

# Generate and register blueprint
blueprint = generate_blueprint(Entry, db)
app.register_blueprint(blueprint, url_endpoint='/')

To-Do

  • Input validation
  • API docs generation