Python 3.x 基于变量的Python 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)

我是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)
    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。希望有帮助。太棒了,它也是一个内置功能。谢谢你指出这一点!棒极了,它也是一个内置函数。谢谢你指出这一点!