【问题标题】:How to combine search Filters in python LDAP?如何在 python LDAP 中组合搜索过滤器?
【发布时间】:2014-02-26 14:09:18
【问题描述】:

在访问 LDAP 数据时,我不断收到 Size Limit Exceeded 错误。

谷歌上提出的解决方案之一要求更严格的搜索过滤器。

如何在 python LDAP 中组合两个或多个搜索过滤器? 使用建议的 (|(filter1)(filter2)) 会产生错误。

这里是查询:

baseDn = "ou=active, ou=employees, ou=people, o=xxxxx.com";
searchScope = ldap.SCOPE_SUBTREE
#retrieve Certain attributes
retrieveAttributes = ["manageruid","manager","cn"]
search_query = raw_input("Enter the query :")
#This searchFilter needs to be more specific
searchFilter = "city=" + "Bangalore"

try :
   ldap_result_id = l.search(baseDn, searchScope, searchFilter,   retrieveAttributes)
   result_set = []
   while 1:
       result_type, result_data = l.result(ldap_result_id, 0)
       if(result_data == []):
           break
       else:
           if result_type == ldap.RES_SEARCH_ENTRY:
               result_set.append(result_data)
       #print result_set
       print len(result_set)   

except ldap.LDAPError, e:
    print e

在尝试组合搜索过滤器时: 这个错误来了。

 File "practice.py", line 33
    search_filter = (&("city=Bangalore")("manageruid=278586"))
                     ^
SyntaxError: invalid syntax 

【问题讨论】:

  • 哪个错误?您的实际查询如何?
  • 代码与错误信息不符。
  • 是的,但我在开头提到如果我需要使用更严格的过滤器来阻止“超出大小限制”错误。但是如果我尝试组合搜索过滤器,它会给出上面给出的错误 [“无效语法”]
  • 但是你没有展示你是如何尝试组合它们的,这似乎是错误所在

标签: python python-2.7 python-ldap


【解决方案1】:

我认为search_filter 必须是一个字符串。你试过吗?

search_filter = "(&(city=Bangalore)(manageruid=278586))"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2016-08-04
    • 2013-09-24
    相关资源
    最近更新 更多