RethinkDB异步驱动程序的类ORM包装器
resync-orm的Python项目详细描述
##简介
resync是一个基于django orm的包装器,它围绕着RethinkDB驱动程序的(当前未记录的)异步连接类。
nesteddocument
来自myapp.auth.models导入用户
类索环(nesteddocument):
“
嵌套文档没有关联的表,但是允许您为模型中的任意json子文档定义
架构。
“
weight=fields.floatfield()
enabled=fields.booleanfield(默认值=false)
类小部件(模型):
“
模型类引用数据库中的表。默认情况下,表名是类的小写名称。
“
id=fields.strfield()
grommet=fields.nesteddocumentfield(grommet)
foo=fields.strfield()
owner=fields.foreignkeyfield(user)
async def create_widget(user:user)->;无:
“
可以像普通python对象一样创建和操作模型对象,
然后保存到数据库中。
“
new_widget=widget(owner=user,foo='bar')
new_widget.grommet=grommet(weight=15.0)
等待new_widget.save()
打印(new_widget.id)45226082-976e-4226-b2c7-0d2c86c45b73':由rethinkdb生成实例。
“
widget=await widget.objects.get(id=id)
return widget
async def get_all_widgets()->;键入。list[widget]:
“
”查询集可以“await”以获取列表中的所有结果…
“
widgets=await widget.objects.all()
return widgets
asyncdef将所有窗口小部件发送到套接字(套接字:aiohttp.web.websocketresponse)->;无:
“
…或者使用“async for`
”“
async for widget.objects.all():
serializer=mywidgetserializer(widget)
socket.send(serializer.data)
async def rename\u all-widgets()->进行迭代;无:
“
在单个查询中对数据库进行简单更改,而不将对象提取为python代码。
“
等待widget.objects.all().update(foo='baz')
typings.list[widget]:
“
查询相关字段的工作方式与django类似,返回一个QuerySet
,该QuerySet
“
ret=[]
user.widget_set.filter中的小部件异步(enabled=true):
ret.append(小部件)
ret
def main():
”“
resync透明地处理连接,管理连接池以在可用时重新使用打开的连接。
“
重新同步.setup({
“主机”:“我的重新思考数据库.fqdn”、
“数据库”:“我的数据库名称”、
“用户”:“测试”,
“password”:“123456”
}这些参数被传递给rethinkdb.connect
(文档:https://www.rethinkdb.com/api/python/connect/)
loop=asyncio.get_event_loop()
fut=asyncio.sure_future(get_all_widgets())
loop.run_until_complete(fut)
print(fut.result())列表小部件……
teardown=asyncio.secure_future(resync.teardown())
loop.run_uncomplete(teardown)关闭所有连接。
loop.close()
````
-test
-docs
-docs
贡献者
-jameskekeys(jameskekekekekekes)(詹姆作者)<;@skolsuper>;
resync是一个基于django orm的包装器,它围绕着RethinkDB驱动程序的(当前未记录的)异步连接类。
nesteddocument
来自myapp.auth.models导入用户
类索环(nesteddocument):
“
嵌套文档没有关联的表,但是允许您为模型中的任意json子文档定义
架构。
“
weight=fields.floatfield()
enabled=fields.booleanfield(默认值=false)
类小部件(模型):
“
模型类引用数据库中的表。默认情况下,表名是类的小写名称。
“
id=fields.strfield()
grommet=fields.nesteddocumentfield(grommet)
foo=fields.strfield()
owner=fields.foreignkeyfield(user)
async def create_widget(user:user)->;无:
“
可以像普通python对象一样创建和操作模型对象,
然后保存到数据库中。
“
new_widget=widget(owner=user,foo='bar')
new_widget.grommet=grommet(weight=15.0)
等待new_widget.save()
打印(new_widget.id)45226082-976e-4226-b2c7-0d2c86c45b73':由rethinkdb生成实例。
“
widget=await widget.objects.get(id=id)
return widget
async def get_all_widgets()->;键入。list[widget]:
“
”查询集可以“await”以获取列表中的所有结果…
“
widgets=await widget.objects.all()
return widgets
asyncdef将所有窗口小部件发送到套接字(套接字:aiohttp.web.websocketresponse)->;无:
“
…或者使用“async for`
”“
async for widget.objects.all():
serializer=mywidgetserializer(widget)
socket.send(serializer.data)
async def rename\u all-widgets()->进行迭代;无:
“
在单个查询中对数据库进行简单更改,而不将对象提取为python代码。
“
等待widget.objects.all().update(foo='baz')
typings.list[widget]:
“
查询相关字段的工作方式与django类似,返回一个QuerySet
,该QuerySet
“
ret=[]
user.widget_set.filter中的小部件异步(enabled=true):
ret.append(小部件)
ret
def main():
”“
resync透明地处理连接,管理连接池以在可用时重新使用打开的连接。
“
重新同步.setup({
“主机”:“我的重新思考数据库.fqdn”、
“数据库”:“我的数据库名称”、
“用户”:“测试”,
“password”:“123456”
}这些参数被传递给rethinkdb.connect
(文档:https://www.rethinkdb.com/api/python/connect/)
loop=asyncio.get_event_loop()
fut=asyncio.sure_future(get_all_widgets())
loop.run_until_complete(fut)
print(fut.result())列表小部件……
teardown=asyncio.secure_future(resync.teardown())
loop.run_uncomplete(teardown)关闭所有连接。
loop.close()
````
-test
-docs
-docs
贡献者
-jameskekeys(jameskekekekekekes)(詹姆作者)<;@skolsuper>;