2014-02-26 72 views
2

訪問LDAP數據時,我不斷收到Size Limit Exceeded錯誤。如何結合搜索python LDAP中的過濾器?

在谷歌提出的解決方案之一要求更嚴格的搜索過濾器。

如何在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 
+0

哪個錯誤?你的實際查詢是怎樣的? –

+0

該代碼與錯誤消息不匹配。 –

+0

是的,但我在開頭提到,如果我需要使用更嚴格的過濾器來停止「尺寸限制超出」錯誤。但是,如果我嘗試合併搜索過濾器,它會給出上面給出的錯誤[「無效的語法」] – surya

回答

5

我認爲search_filter必須是一個字符串。你試過這個嗎?

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