数据库模型例子

Models

想使用本框架,你需要先定义数据库模型。可选:SQLAlchemy or Flask-SQLALchemy.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import flask
from flask_sqlalchemy import SQLAlchemy

app = flask.Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./test.db'
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.Unicode(32), unique=True)
    posts = db.relationship(
        'Post',
        backref=db.backref('user')
    )


class Post(db.Model):
    __tablename__ = "posts"
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    title = db.Column(db.String(80), nullable=False)
    body = db.Column(db.Text)
    pub_date = db.Column(db.DateTime, nullable=False)


db.create_all()

If you are using pure SQLAlchemy:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from flask import Flask
from sqlalchemy import Column, Date, DateTime, Float, Integer, Unicode, Text, String
from sqlalchemy import ForeignKey
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import backref, relationship

app = Flask(__name__)
engine = create_engine('sqlite:///./test.db', convert_unicode=True)

Base = declarative_base()
Base.metadata.bind = engine

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(Unicode(32), unique=True)
    posts = relationship(
        'Post',
        backref=backref('user')
    )


class Post(Base):
    __tablename__ = "posts"
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    title = Column(String(80), nullable=False)
    body = Column(Text)
    pub_date = Column(DateTime, nullable=False)


Base.metadata.create_all()

APIManager

拥有模型之后,就可以开始添加api。
import rest_utils

api = rest_utils.APIManager(app, db=db)
Or if you are using pure SQLAlchemy, specify the session you created above instead:
api = rest_utils.APIManager(app, engine=engine)

create the API

person_blueprint = api.add(User, methods=['GET', 'POST', 'DELETE'])

Note that you can specify which HTTP methods are available for each API endpoint. There are several more customization options; for more information, see Customizing the Restful interface.