有了这个神器,分分钟完成python后端项目!

146 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 看源码。

虽然.. 尽管.. 统一标准的接口还是满足不了复杂需求,剩下的代码就靠自己敲吧!