Python новичок.Поэтому я получаю некоторые атрибуты из каталога acitve с помощью Python ldap3 и сохраняю в базе данных MySQL - все работает отлично.Я также получаю атрибут thumbnailphoto из AD и сохраняю его как BLOB-объект в той же таблице базы данных mysql.
Вот проблема, она мне нужна в тексте типа 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())