萧潇墨 2020-03-17 12:03 采纳率: 75%
浏览 321
已结题

今天偶然看见一段Python大神写的代码,觉得好厉害,我在想go是不是也能实现一样的方法

今天在维护一个别人写的Python项目,改一个接口,去看了一下项目里面封装了一个方法特别好用,这个方法是数据库层面的,接收四个参数,第一个参数是model实体类,第二个参数是查询成功后需要返回数据的那些字段的一个配置是一个字典类型,第三个参数是区间筛选需要对哪个字段进行区间筛选也是一个字典,四个参数是排序规则也是一个字段,并且这个方法适用于任何一个model实体,第一个参数必传,后面的随意
该方法在返回的时候还自动转成了json,key对应model的字段名 value对应model该字段的值,我在想go怎么封装类似这样的方法
具体项目涉密我就不截图代码了,我说一下大概实现的一个方法
假设我有一个user表

class User(Base):
    __tablename__ = 'approval_favourable'
    id = Column(BigInteger(), primary_key=True)
        username = Column(String())
        password = Column(String())
        nickname = Column(String())
        addtime = Column(Datetime())

假设我有一个query_db()的方法

def query_db(entity_model,query_dict,Interval,sort)

这个方法接口四个参数,第一个

当我只传一个参数的时候

query_db(User)

返回的结果是这样

[
    {
        "id":1,
        "username":"admin",
        "password":"admin",
        "nickname":"admin",
        "addtime":"20200101"
    },
    {
        "id":2,
        "username":"admin",
        "password":"admin",
        "nickname":"admin",
        "addtime":"20200102"
    },
    {
        "id":3,
        "username":"admin",
        "password":"admin",
        "nickname":"admin",
        "addtime":"20200103"
    }
]

当我传两个参数的时候

query_dict=[
    {
        "field_name":"username"
    }
]
query_db(User,query_dict)

返回的结果是这样的

[
    {

        "username":"admin"

    },
    {
        "username":"admin"
    },
    {
        "username":"admin"
    }
]

当我传三个参数的时候

query_dict=[
    {
        "field_name":"username"
    },
    {
        "field_name":"addtime"
    }
]
Interval=[
    {
        "field_name":"addtime",
        "max_value":"这里是时间戳",
        "min_value":"这里是时间戳"
    }
]
query_db(User,query_dict,Interval)

返回的结果是这样的

[
    {

        "username":"admin",
        "addtime":"20200101"

    },
    {
        "username":"admin",
            "addtime":"20200102"
    }
]

当我传四个参数的时候

query_dict=[
    {
        "field_name":"username"
    },
    {
        "field_name":"addtime"
    },
         {
        "field_name":"id"
    }
]
Interval=[
    {
        "field_name":"addtime",
        "max_value":"这里是时间戳",
        "min_value":"这里是时间戳"
    }
]
sort=[
    {
        "field_name":"id",
        "sort":"desc"
    }
]
query_db(User,query_dict,Interval,sort)

返回的结果是这样的

[
    {
        "id":2,
        "username":"admin",
        "addtime":"20200102"
    },
    {
        "id":1,
        "username":"admin",
        "addtime":"20200101"
    }
]
如果用go语言去实现应该怎么实现呢?




封装的方法适用所有的model实体
  • 写回答

2条回答 默认 最新

  • 必问官方博客 2020-03-17 17:23
    关注

    亲,您好,我是CSDN必问的Q妹,你这个问题在必问区提问可能会更快速解决哦,邀您体验:https://biwen.csdn.net/

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献