持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
你是否还在为反复写增删改查而感到乏味??
你是否还在为不断CtrlC、CtrlV而感到废手??
快来用我写的这个python库吧,解放你的左手,用在该用的地方!!🐶
安装库
pip install flask-sqlalchemy-rest
先看个大概(后面有完整代码)
新建User模型:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name= db.Column(db.String)
age = db.Column(db.Integer)
注册模型:
rest.add_model(User)
就这么简单!
跑起来后都有啥?
你将获得以下5个接口!
请求方法 接口路径 描述
GET /api/user 获取所有User
GET /api/user/<id> 获取指定id的User
POST /api/user 增加一个User
PUT /api/user/<id> 修改指定User
DELETE /api/user/<id> 删除指定User
就这??
我要分页!我要加过滤!我要结果排序!我要登陆授权!我只要get!我要join查询!我要王心凌 。。。
别急,你们要的都有!(没有的,上来自己动 手加)
分页
每页20个,第2页
GET /api/user?_page=2&_page_size=20
过滤条件
获取name=tony、age=20的所有用户
GET /api/user?name=tony&age=20
获取名字包含ton字符的所有用户
GET /api/user?name:ct=ton
ct: contain,更多操作符在下面 👇👇
获取年龄大于20的所有用户
GET /api/user?age:gt=20
gt: greter than
排序
按年龄从小到大
GET /api/user?_sort=age
按年龄倒序
GET /api/user?_sort=age&_desc=1
登陆授权
定义一个登陆验证函数
def your_auth_func():
...
初始化时,传入参数
rest = Rest(app, db, auth_decorator=your_auth_func)
操作符
eq equal(等于)
ne not equal(不等于)
gt greter than(大于)
ge greter equal(大于等于)
lt less than(小于)
le less equal(小于等于)
in in a list, split with ','(在aa,bb,cc内)
ni not in a list , split with ','(不在aa,bb,cc内)
ct contains string(包含字符)
nc not contains string(不包含字符)
sw start with string(以字符xx开头)
ew end with string(以字符xx结尾)
完整示例代码
新建app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy_rest import Rest
# 创建一个flask应用
app = Flask(__name__)
# 配置sqlite数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.sqlite"
# 创建SQLAlchemy对象
db = SQLAlchemy(app)
# 创建flask_sqlalchemy_rest对象
rest = Rest(app, db)
# 定义一个用户表
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name= db.Column(db.String)
age = db.Column(db.Integer)
# 生成数据库表结构
with app.app_context():
db.create_all()
# 注册接口
rest.add_model(User)
# 启动flask应用
app.run()
运行:python app.py
访问接口:http://127.0.0.1:5000/api/user
更多内容请去 Github 看源码。
虽然.. 尽管.. 统一标准的接口还是满足不了复杂需求,剩下的代码就靠自己敲吧!