Python ldap3 Reader.search_paged返回0结果,同条件search正常求助
问题解决:ldap3 Reader.search_paged返回0条结果的原因及修复
核心原因是Reader.search_paged()默认参数generator=True,此时方法返回生成器对象,不会将结果填充到Reader实例本身,直接遍历Reader对象自然无结果。以下是两种修复方案:
方案1:保持原有遍历逻辑,将结果存入Reader实例
设置generator=False,让分页查询的结果自动存入Reader对象,后续遍历逻辑无需修改:
obj_user = ObjectDef('user', conn_object) obj_user += AttDef('sAMAccountName') thesearch = '(sAMAccountName=a*)' attributes = ['cn', 'distinguishedName'] r = Reader(conn_object, object_def=obj_user, base=bind_domain, query=thesearch) # 关键:设置generator=False,结果会存入Reader实例 r.search_paged(paged_size=500, generator=False) for currowindex, currow in enumerate(r): print('cn=', currow['cn'].value)
方案2:直接遍历search_paged返回的生成器
接收方法返回的生成器对象,直接遍历获取每一页的结果:
obj_user = ObjectDef('user', conn_object) obj_user += AttDef('sAMAccountName') thesearch = '(sAMAccountName=a*)' attributes = ['cn', 'distinguishedName'] r = Reader(conn_object, object_def=obj_user, base=bind_domain, query=thesearch) # 接收分页生成器 results = r.search_paged(paged_size=500) for currowindex, currow in enumerate(results): print('cn=', currow['cn'].value)
额外检查点
- 确认你的Active Directory服务器未禁用分页搜索(默认允许,若有特殊权限配置需排查)
- 确保
conn_object连接实例正常,未手动禁用LDAP分页控制项
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

