轻松执行LDAP查询,结果超过1000个

ldap_paged_search的Python项目详细描述


摘要

ldap_paged_search是一个python库,可以使用更多 小于1000个结果,或将查询分解为更小的结果集以减少 服务器加载。

许多ldap服务器(如active directory)不会返回超过1000个 结果,除非使用分页请求。现有的Python LDAP库 支持分页,但需要一些不太直观的编码来执行。 这个库只是一个包装器,使分页搜索变得容易。

它的接口也比ldap库更容易执行查询 它包起来了。

要求

  • 在Python2.8上测试
  • 默认的python库包括ldap库

安装

通过PIP或简易安装

$ sudo pip install ldap_paged_search   # If you prefer PIP

$ sudo easy_install ldap_paged_search  # If you prefer easy_install

手动安装

$ git clone https://github.com/neoCrimeLabs/python-ldap_paged_search.git
$ cd python-ldap_paged_search
$ sudo python setup.py install

用法

初始设置

fromldap_paged_searchimportLdapPagedSearch# Required valuesurl='ldap://your.ldap.server'username='username'# for anything but active directoryusername='domain\\user'# for active directorypassword='yourPassword'baseDN='dc=company,dc=com'searchFilter='(&(objectCategory=user))'# Optional valuesmaxPages=0# 0 = everythingmaxPages=10# Return first 10 pages onlyattributes=['*']# Return all fieldsattributes=['FieldName','AnotherField']# Return specific fields onlypageSize=1000# How many records per page# Usual max is 1000; check your LDAP server docs

定义回调方法

# Using a callback method to process results uses less memory on large queries# Not using a callback search() will return all results as a single listdefmyCallback(dn,record):printdn,record

使用“with”查询

# maxPages, pageSize, attributes, and callback are all OPTIONALwithLdapPagedSearch(url,username,password,maxPages=2,pageSize=2)asl:results=l.search(baseDN,searchFilter,attributes=attributes,callback=myCallback)

替代查询方法

# maxPages, pageSize, attributes, and callback are all OPTIONALl=LdapPagedSearch(url,username,password,maxPages=2,pageSize=2)results=l.search(baseDN,searchFilter,attributes=attributes,callback=myCallback)

结果格式

# If you don't set a callback, your results will be returned as follows[('DistinctName1',{'FieldName':['value1','value2'],'AnotherField':['value'],}),('DistinctName2',{'FieldName':['value1','value2'],'AnotherField':['value'],}),...]

使用条件

我写这个图书馆是为了我自己使用,但我意识到其他人可能会觉得它很有用 有很多论坛主题描述了这个问题。

不幸的是,我不能保证任何积极的支持,但我会尽我最大的努力 许可证。也就是说,我很乐意接受带有适当更改的push请求 向图书馆的普通读者致辞。

简单地说,用这个你自己承担风险。如果成功了,太好了!如果没有,我可能不会 能够帮助你。不过,如果你修好了什么,请把它推回去,我会 可能会接受。:-)

此外,如果您在包、工具或商业软件中使用此库,请 我知道,我会把它列在这里!

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

推荐PyPI第三方库


热门话题
java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果