【问题标题】:How to do object mapping using python-cloudant如何使用 python-cloudant 进行对象映射
【发布时间】:2019-01-10 08:23:46
【问题描述】:

我一直在学习 Python 并学习了一些 CouchDb 教程。获取 couchdb 托管 DbaaS 的最新方式看起来像 Cloudant,因为其他人已经关闭。

我在本地使用 couchdbkit 开发取得了进展,它在模式包中有一个非常好的 DAO 映射器,而且标准的 couchdb-python 库有一个与此类似的“映射”模块。

我在 cloudant 库中找不到此功能 - 示例直接操作 JSON - 他们是否将其遗漏了,或者是否有经过批准的 ODM 库可供使用?

【问题讨论】:

    标签: python couchdb dao cloudant odm


    【解决方案1】:

    听起来您真正要问的是“如何将 json 文档转换为我自己的 Python 类”。客户端库(对于 Cloudant)的作用是抽象出样板 HTTP 和 json 编码的东西,并为您留下很好的方法调用和 json 文档的本机(在 Python 中为 dict)表示。尤其是在 Python 中,鉴于其出色的 requests 库和流畅的 json 处理,大多数人甚至可能不会费心使用特定的客户端库。

    dict 转换为您自己制作的类应该不难,或者需要一个库。 Python 3.7:

    from dataclasses import dataclass
    
    @dataclass
    class Employee:
        name: str
        department: str
        code: int
    

    import requests
    from employee import Employee
    
    doc = requests.get("https://acc.cloudant.com/employees/bobthebuilder").json()
    employee = Employee(
        name=doc.get("name", "n/a")
        department=doc.get("department", "n/a")
        code=doc.get("code", "n/a")
    )
    

    【讨论】:

    • 好的,关于DataClasses的TIL!很遗憾,我一直在运行 Python 2.7,因为许多 couchDb tutes 都使用它。似乎答案是“它被故意遗漏了”,因为 Python 的新功能很棒。
    • 嗯.. 你可以在 py2.7 中使用命名元组做几乎相同的事情。它被排除在库之外,因为 doc-object 映射依赖于应用程序,而且 dict 是 Cloudant 文档的一个很好的表示。
    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多