带有mongo应用程序的包装类

mongodec的Python项目详细描述


#mongodec提供了一个通用的包装类,可以扩展到任何python类,并允许简单地覆盖和包装方法。在这个repo中,它被用来实现"pymongo"对象的一个扩展,这个扩展涵盖了一个常见的用例,即希望对所有数据库访问应用筛选器。

setup
安装mongodec的最简单方法是使用pip:`pip install mongodec`。尽管可以克隆此repo,并且您可以根据自己的喜好从源代码构建它。

对mongo数据库的后续访问是通过提供的"mongo config"类进行的,这些类来自mongodec import mongoconfig
"import pymongo"只用于assert
config=mongoconfig(user='dev',
password='foobar',
host='some-host-exsample.mongo db.net,
database='dbname',
port=27017)
mongo-db-obj=config.db()
assert-isinstance(mongo-db-obj,pymongo.database.database)
````
他反对将它们复制为实例化参数,可能还有其他参数。假设我们要查看与筛选器{name':'foobar'、'value':{'$gt':10}}匹配的文档。然后我们可以获取一个pymongo数据库对象并构建过滤后的数据库:
```
from mongodec import filtermongodb
mongo-db=…#pymongo.database.database的某个实例
q撸filter={'name':'foo','value':{'$gt':10}
filter撸mongo撸obj=filter mongo db(mongo db,q撸filter)

示例--使用pymongo的类插入一些伪数据
real撸collection=mongo db.collection撸name
real撸collection.insert([{'name':'foo','value':4},
{'name':'foo','value':12},
{'name':'bar','value':100}]


filter_collection_3=filter_mongo_obj.get_collection('collection_name')
assert filter_collection==filter_2
assert filter_collection==filter_3

将filter_collection操作为一个真正的集合
assert filter_collection.count()=1
assert(filter戋collection.find戋one({},{''u id':0})==
{'name':'foo','value':12})
filter戋collection.delete戋many()
assert real戋collection.count()==2
assert filter戋collection.count()==0

tion.count(no_changeling=true)==2
````
所有适用的方法都被适当地包装,我们也为批量操作提供支持。

在mongodec/changeling.py中定义,可以在mongodec/filter\mongo.py中查看"filtermongo*"类的实现

任何扩展changeling的类c都应被视为另一个类b的包装器。然后,任何c实例都应将b的实例作为实例化参数。NT。c中b的实例称为"base object",可通过"c_instance.base_object"访问。在内部,每个变更对象都使用其属性"cdict"跟踪包装方法。要用"ultrafunky"方法包装类"down2get"的"funky"方法,那么"cdict"应该是这样的:
```
{down2get方法:{funky':ultrafunky}
`````


``
{
"down2get-u-methods":{"funky":ultrafunky},
"down2get-wrap-all":和turnt
}
```

任何很难包装且应该直接重写的方法都可以在"c"的类定义中完成。

每个包装方法都有3个参数:func、cdict和callargs.
func是被包装的函数。cdict是变更实例的cdict,callargs是一个字典,其中包含func显式命名的所有参数。

mongodec/tests/test\u changeling.py中的"st_changeling"


演示如何覆盖基本对象方法的简单扩展是位于mongodec/filter\mongo.py中的"filtermongobulkooperationbuilder"

一个更复杂的示例,它封装了"c"的所有功能hangeling`是mongodec/filter\mongo.py中的'filtermongocollection'类



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Android应用内小部件中显示之前停止活动   swing如何在java文本字段中添加文本而不是替换文本   java相对布局getParams和setMargin不工作   java处理JDBC中Oracle的“本地时区时间戳”数据类型   ArrayList的java空指针异常   java无法使用跨不同机器生成的访问令牌进行身份验证   for循环中的java后缀和前缀   java验证方法未运行Mockito   java如何防止从其他网站调用我的servlet   java需要您的帮助来理解Android中的更新状态点   java使用纬度和经度获取时区   java httpURLConnection:post参数可以有多长?   java如何将执行的GROOVY脚本结果返回到RESTAPI响应   java为什么不同的线程输入了两次“synchronized(lock)”?   java在使用springsecurity和springwebflux时禁用WebSession创建   java如何解决“itemTag无法解析或不是字段”?   Java静态和动态绑定、重载   java为什么instanceof听上去不工作?   java登录到外部站点?(安卓)