记录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
相关推荐
狗凯之家源码网6 分钟前
AI 步数修改提交系统源码应用场景与落地指南
android·数据库·人工智能·运动步数
Είναι η κοπέλα7 分钟前
模型量化完全指南:GGUF、GPTQ、AWQ 怎么选
人工智能·pytorch·python
yi01110 分钟前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
三号路口17 分钟前
低代码平台的扩展机制:插件化架构怎么设计
低代码
weixin1997010801619 分钟前
《1688消息服务落地方案:alibaba.message.* 与 Webhook 回调的可靠性与重试策略》(附Python源码)
开发语言·python
ZHOUPUYU29 分钟前
PHP 9.0 前瞻:下一代 PHP 会带来哪些新功能?
android·开发语言·php
一只专注api接口开发的技术猿30 分钟前
Open‑Claw 实战|告别页面逆向,快速搭建电商商品监控与数据分析完整方案
大数据·数据库·python·数据挖掘·数据分析
忆~遂愿1 小时前
免密连接+快捷键+虚拟鼠标:ToDesk远程操作AI效率拉满
人工智能·python·深度学习·神经网络·自然语言处理·计算机外设·安全架构
JMchen1 小时前
性能优化——让Native代码飞起来
android·c++·性能优化
ComPDFKit1 小时前
用 ComPDF DocSlight 提取 PDF 表格:三种样本实测与 Python 接入
开发语言·python·pdf·pdf表格提取