数据库不可知查询系统

link.dbrequest的Python项目详细描述


link.dbrequest是一个与数据库无关的查询系统。

有关详细信息,请参见documentation

LicenseDevelopment StatusLatest releaseSupported Python versionsSupported Python implementationsDownload formatBuild statusCode test coverageDownloadsCode Health

安装

pip install link.dbrequest

功能

  • database agnostic
  • lazy query resolving
  • cached queries
  • queries are unique

示例

获取后端:

fromlink.middleware.coreimportMiddleware# Will open a QueryManager using a MongoDB backendmanager=Middleware.get_middleware_by_uri('query+mongo://localhost:27107/mydatabase/mycollection')# Will open a QueryManager using a SQL backendmanager=Middleware.get_middleware_by_uri('query+sql://localhost:5432/mydatabase/mytable')

后端操作:

fromlink.dbrequest.expressionimportE,Ffromlink.dbrequest.assignmentimportAfromlink.dbrequest.comparisonimportCquery=manager.all()# get an iterable over all elementsmanager.create(A('foo','bar'))# put document {'foo': 'bar'} into databasedoc=manager.get(C('foo')!='bar')# get single element, or None

查询操作:

docs=list(query)# iterate over query to execute the requestdocs=list(query)# use cache when iterating again# create a new query from the first oneq2=query.filter(C('foo')=='bar')assertqueryisnotq2# exclude documents without a field named "bar"q3=q2.exclude(~C('bar'))# filter documents "weight > 5" and "prop1 < prop2 * 5"q4=q3.filter((C('weight')>5)&(C('prop1')<(E('prop2')*5)))# set "prop3 = prop1 + prop2" on q2 resultdocs=q2.update(A('prop3',E('prop1')+E('prop2')))# delete documentsq3.delete()

文档操作:

# save/delete a single documentdoc.save()doc.delete()

捐赠

Support via Liberapay

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

推荐PyPI第三方库


热门话题
java Spring框架服务单元测试   在Java中遍历hashmaps的hashmap以检索字符串值   如何使用CodeQL检查Java注释是否具有特定属性?   java为什么在Spring Boot中访问此资源而不是登录弹出窗口需要始终获得完全身份验证   处理将多集计数转换为列表的过程   java另一个线性布局,没有出现按钮   eclipse Java映像加载未显示在jar中   java Junit类无法加载基本测试类ApplicationContext   java如何在main中使用my getvalues()方法打印列表   java Sonar,S128:切换案例应该以无条件的“中断”语句结束,而不是继续   java从socket读取字符串错误连接重置错误   java使用新数据刷新任意图表饼图   java通过异步运行lambda访问方法参数   java错误的结果一旦我处理try and catch