Python 3.x 基于变量的Python ldap3打印条目
我是Python新手,前面有个愚蠢的问题 我需要将MySQL数据库中的条目与ldap进行比较。我创建了一个字典来保存相应的值,当我尝试循环遍历字典并将它们传递给ldap3条目以显示结果时,它将变量作为文本Python 3.x 基于变量的Python ldap3打印条目,python-3.x,function,ldap,Python 3.x,Function,Ldap,我是Python新手,前面有个愚蠢的问题 我需要将MySQL数据库中的条目与ldap进行比较。我创建了一个字典来保存相应的值,当我尝试循环遍历字典并将它们传递给ldap3条目以显示结果时,它将变量作为文本 for x in values_dict: value2=values_dict[x] try: ldap_conn.entries[0].value2 except Exception as error: print(error)
for x in values_dict:
value2=values_dict[x]
try:
ldap_conn.entries[0].value2
except Exception as error:
print(error)
else:
print(value2)
attribute 'value2' not found
如果我将value2替换为“sn”或我提取的任何其他属性,它就可以正常工作。我还使用了exec(),但这不会返回任何结果
for x in values_dict:
value2=values_dict[x]
test1='ldap_conn.entries[0].{}'.format(value2)
try:
result1=exec(test1)
except Exception as error:
print(error)
else:
print(result1)
None
有什么想法吗
编辑1:根据请求,这里是values_dict的值。如前所述,循环确实正确地解析了这些值,ldap确实返回了属性,但当我尝试使用变量从条目中查找属性时,变量是按字面意思取的
values_dict = {
"First_Name": "givenname",
"Middle_Name": "middlename",
"Last_Name": "sn",
"Preferred_Name": "extensionattribute2",
"Work_Location": "physicaldeliveryofficename",
"Work_City": "l",
"Work_State": "st",
"Work_Postal": "postalcode",
"Work_Email": "mail"
}
此处使用的语法
somevariable.someattr
:
ldap_conn.entries[0].value2
始终表示“访问somevariable
的名为someattr
的属性”。它总是被解释为一个文本字符串。如果需要动态访问属性,请使用getattr
函数:
getattr(ldap_conn.entries[0], value2)
您当前没有将该结果分配到任何位置,因此您可能需要以下内容:
result1 = getattr(ldap_conn.entries[0], value2)
此处使用的语法
somevariable.someattr
:
ldap_conn.entries[0].value2
始终表示“访问somevariable
的名为someattr
的属性”。它总是被解释为一个文本字符串。如果需要动态访问属性,请使用getattr
函数:
getattr(ldap_conn.entries[0], value2)
您当前没有将该结果分配到任何位置,因此您可能需要以下内容:
result1 = getattr(ldap_conn.entries[0], value2)
您能否包含您的值并显示ldap查询?您在values\u dict QUERIED中定义并从LDAP服务器返回的所有属性?LDAP查询工作并返回我要查找的所有属性。当我打印'value2'时,它会打印循环中相应的值x。我回家后会更新我的帖子。@Moritz我已经用字典值更新了OP。希望对您有所帮助。您能将您的值包含进来并显示您的ldap查询吗?您在values\u dict QUERIED中定义并从LDAP服务器返回的所有属性?LDAP查询工作并返回我要查找的所有属性。当我打印'value2'时,它会打印循环中相应的值x。我回家后会更新我的帖子。@Moritz我已经用字典值更新了OP。希望有帮助。太棒了,它也是一个内置功能。谢谢你指出这一点!棒极了,它也是一个内置函数。谢谢你指出这一点!