python-3.x - 来自 Active Directory 的 Python ldap3 缩略图
问题描述
蟒蛇新手。所以我使用 python ldap3 从 acitve 目录中获取一些属性并保存在 mysql 数据库中 - 一切正常。我还从 AD 中获取 thumbnailphoto 属性,并在同一个 mysql db 表上另存为 blob。
这是问题所在,我需要 base64 类型的文本,但它似乎以其他文本格式返回。来自 ldap / mysql 的样本类型文本
我相信它应该已经保存在活动目录上的 base64 中(需要 base64 结果),但事实并非如此。
如何将 AD 通过 ldap3 返回的文本转换为 base64 并保存到 mysql 数据库?
from ldap3 import Server, Connection, ALL
from datetime import datetime
import MySQLdb
startTime = datetime.now()
# ######################
# LDAP Setup
# ######################
serverName = 'ip'
domainName = 'xyz'
userName = 'xyz'
password = 'xyz'
base = 'base'
# ######################
# MySQL Connection Setup
# ######################
connsql = MySQLdb.connect(host = "ip",
user = "xyz",
passwd = "xyz",
db = "db",
port=3306
)
# ######################
# Main Code
# ######################
server = Server(serverName)
conn = Connection(server, read_only=True, user='{0}\\{1}'.format(domainName, userName), password=password, auto_bind=True)
conn.search(base, '(objectclass=person)', attributes=['sAMAccountName', 'displayName', 'mail', 'telephoneNumber', 'mobile', 'ipPhone', 'physicalDeliveryOfficeName', 'thumbnailPhoto'])
cursor = connsql.cursor ()
for i in conn.entries:
cursor.execute("""
INSERT INTO fwad
(sAMAccountName, displayName, mail, telephoneNumber, mobile, ipPhone, physicalDeliveryOfficeName, thumbnailPhoto)
VALUES
(%s, %s, %s, %s, %s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
displayName = VALUES(displayName),
mail = VALUES(mail),
telephoneNumber = VALUES(telephoneNumber),
mobile = VALUES(mobile),
ipPhone = VALUES(ipPhone),
physicalDeliveryOfficeName = VALUES(physicalDeliveryOfficeName),
thumbnailPhoto = VALUES(thumbnailPhoto);
""",(i.sAMAccountName, i.displayName, i.mail, i.telephoneNumber, i.mobile, i.ipPhone, i.physicalDeliveryOfficeName, i.thumbnailPhoto))
connsql.commit()
cursor .close()
connsql.close()
print ("AD has taken ", datetime.now() - startTime, " on ", datetime.now())
解决方案
如果我正确理解了您的问题,您可能可以通过以下方式解决您的问题:
import base64
...
...
imgstring = conn.response[0].get('attributes', {}).get('thumbnailPhoto', '')
img_string_decoded = base64.encodebytes(imgstring).decode('utf-8')
推荐阅读
- r - 使用 is.na() 函数检查数据框中的缺失值
- docker - Azure DevOps 服务中的 Docker 服务连接
- bluetooth-lowenergy - 如何通过gatttool从Huawei Watch GT-DEE读取BMP数据包?
- javascript - 如何防止按钮在 Bootstrap4 中重叠?
- monitoring - 普罗米修斯的每分钟速率
- sql - 错误:列“g.start_date”必须出现在 GROUP BY 子句中或在聚合函数中使用
- javascript - 如何使用python从whatsapp将base64字符串转换和下载为图像?
- reactjs - React 测试库异步消失
- python - Pandas中iloc方法的逆
- c++ - 在 C++ 中将文件从一个目录复制到另一个目录