Требование: Я пытаюсь создать функцию автозаполнения / автоматического предложения для интерфейсной веб-формы. В серверной части есть функция Python, которая будет запрашивать Active Directory.
Проблема: LIKE
оператор не будет работать в pyad.adquery -> execute_query -> where_clause
В PyAD v 0.4.x я вижу приведенный ниже пример с использованием вроде (cn like 'ws%'
):
q = pyad.adquery.ADQuery()
q.execute_query(
attributes = ['distinguishedname', 'description'],
where_clause = "cn like 'ws%'",
base_dn = "dc=company,dc=com"
)
for r in q.get_results():
print r['distinguishedname']
Но когда я использую оператор LIKE, я получаю:
>>> import pyad.adquery
>>> q = pyad.adquery.ADQuery()
>>> q.execute_query(attributes=["displayName"], where_clause="cn = 'Kent'", base_dn="OU=def,DC=abc,DC=com")
>>> q.execute_query(attributes=["displayName"], where_clause="cn like 'Kent%'", base_dn="OU=def,DC=abc,DC=com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Users\Kent\AppData\Local\Programs\Python\Python37\lib\site-packages\pyad\adquery.py", line 78, in execute_query
self.__rs, self.__rc = command.Execute()
File "<COMObject ADODB.Command>", line 3, in Execute
File "D:\Users\Kent\AppData\Local\Programs\Python\Python37\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Provider', 'One or more errors occurred during processing of command.', None, 1240640, -2147217900), None)
>>>
Я установил v 0.6.0 , в котором отсутствует пример для LIKE
в where_clause
, но когда я смотрю на файлы пакетов Python (\ Python37 \ Lib \ site-packages \ pyadadquery.py [В def execute_query()
] я не вижу причин, по которым это больше не работает.