记录Python低代码开发框架zdppy_amcrud的开发过程

实现新增接口

基础代码

python 复制代码
import env
import mcrud
import api
import snowflake

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]


async def add_user(req):
    data = await api.req.get_json(req)
    values = [data.get(k) for k in columns]
    if "id" not in columns:
        columns.append("id")
        values.append(snowflake.idstr())
    db.add(table, columns, values)
    return api.resp.success(data)


app = api.Api(
    routes=[
        api.resp.post("/user/add", add_user)
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

基本封装

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]

app = api.Api(
    routes=[
        api.resp.post("/user/add", amcrud.add(db, table, columns))
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

测试

bash 复制代码
zhttp 127.0.0.1:8888/user/add name=zs age=23`

查询所有用户接口

基础代码

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]


async def get_all(req):
    if "id" not in columns:
        columns.append("id")
    data = db.get_all(table, columns)
    return api.resp.success(data)


app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", get_all),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

基本封装

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]

app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

测试

bash 复制代码
zhttp 127.0.0.1:8888/user

根据ID查询接口

基础代码

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]


async def get(req):
    _id = api.req.get_path(req, "id")
    data = db.get_by_id(table, _id)
    return api.resp.success(data)


app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", get),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

基本封装

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]

app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", amcrud.get(db, table, columns)),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

测试

bash 复制代码
zhttp 127.0.0.1:8888/user/1793956346500816896

根据ID修改接口

基础代码

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]


async def update(req):
    _id = api.req.get_path(req, "id")
    data = await api.req.get_json(req)
    new_columns = []
    values = []
    for k, v in data.items():
        if k in columns:
            new_columns.append(k)
            values.append(v)
    db.update(table, _id, new_columns, values)
    return api.resp.success()


app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", amcrud.get(db, table, columns)),
        api.resp.put("/user/{id}", update),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

基本封装

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]

app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", amcrud.get(db, table, columns)),
        api.resp.put("/user/{id}", amcrud.update(db, table, columns)),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

测试

bash 复制代码
zhttp PUT 127.0.0.1:8888/user/1793956346500816896 name=zss age=33
zhttp 127.0.0.1:8888/user/1793956346500816896

根据ID删除接口

基础代码

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]


async def delete_route(req):
    _id = api.req.get_path(req, "id")
    db.delete(table, _id)
    return api.resp.success()


app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", amcrud.get(db, table, columns)),
        api.resp.put("/user/{id}", amcrud.update(db, table, columns)),
        api.resp.delete("/user/{id}", delete_route),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

基本封装

python 复制代码
import env
import mcrud
import api
import amcrud

env.load(".env")
db = mcrud.new_env()

table = "user"
columns = ["name", "age"]

app = api.Api(
    routes=[
        api.resp.post("/user", amcrud.add(db, table, columns)),
        api.resp.get("/user", amcrud.get_all(db, table, columns)),
        api.resp.get("/user/{id}", amcrud.get(db, table, columns)),
        api.resp.put("/user/{id}", amcrud.update(db, table, columns)),
        api.resp.delete("/user/{id}", amcrud.delete(db, table)),
    ],
    middleware=[api.middleware.cors()],
)

if __name__ == '__main__':
    app.run()

测试

bash 复制代码
zhttp DELETE 127.0.0.1:8888/user/1793956346500816896
zhttp 127.0.0.1:8888/user
相关推荐
孟健10 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
canonical_entropy10 小时前
AI Agent 的演进之路:从对话到自主代理操作系统
低代码·aigc·agent
码路飞12 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽14 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
阿巴斯甜18 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker18 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
敏编程19 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪19 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook19 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
xq952719 小时前
Andorid Google 登录接入文档
android