Verschieben Sie Daten mit Python Change / Delete (Writer und Reader) nach LDAP.

Einführung

Letztes Mal und Letztes Mal hinzugefügt und LDAP erworben. Dieses Mal werden wir andere Funktionen wie Löschen, Verschieben von Daten und Umbenennen zusammenfassen.

Namen ändern

Benennen Sie nur mit Verbindung um

Wenn Sie nur cn ändern möchten, können Sie es mit `modify_dn ()` von Connection ändern. Nur cn kann geändert werden, indem das dn vor der Änderung und das cn nach der Änderung angegeben werden. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.

main.py



#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')

# modify_Geben Sie den zu verschiebenden dn und den geänderten cn in dn an
conn.modify_dn('cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap', 'cn=sample-rename')

#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:24:03.368406
    cn: sample-name
    objectClass: inetOrgPerson
    sn: sample
]
=======================
[DN: cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:24:03.448482
    cn: sample-rename
    objectClass: inetOrgPerson
    sn: sample
]

Wenn Sie sich die LDAP-Werte vor und nach der Änderung ansehen, sehen Sie, dass cn von Beispielname in Beispielumbenennung geändert wurde. Sie können auch sehen, dass die darin enthaltenen Werte so verschoben wurden, wie sie sind.

Umbenennen mit Writer

Das Umbenennen mit Writer kann mit Writer's entry_rename () `erfolgen. Geben Sie im Gegensatz zu Connection beim Lesen von Writer den Pfad vor der Änderung an und geben Sie den Namen nach der Änderung mit dem vollständigen Pfad an entry_rename () an.

main.py



#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')

#Laden Sie das Verschiebungsziel in Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)

#Geben Sie den vollständigen Pfad nach der Änderung an
data_writer[0].entry_rename('cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap')

#Reflexion der Änderungsergebnisse
data_writer.commit()

#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:40:09.898199
    cn: sample-name
    objectClass: inetOrgPerson
    sn: sample
]
=======================
[DN: cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:40:10.017186
    cn: sample-rename
    objectClass: inetOrgPerson
    sn: sample
]

Wenn Sie sich die LDAP-Werte vor und nach der Änderung ansehen, sehen Sie, dass der cn von Beispielname in Beispielumbenennung geändert wurde und die darin enthaltenen Werte ähnlich wie bei der Verbindungsänderung so verschoben wurden, wie sie sind.

Entität verschieben

Verschieben einer Entität nur über Verbindungen

Wenn Sie die Entität in einen anderen Pfad verschieben möchten, können Sie sie wie oben beschrieben mit `modify_dn ()` von Connection ändern. Sie können eine Entität verschieben, indem Sie den zu verschiebenden dn, den cn nach der Änderung und den dn nach der Änderung angeben. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.

main.py



from ldap3 import Server, Connection, ObjectDef, Reader, Writer

server = Server('localhost')

conn = Connection(server, 'cn=admin,dc=sample-ldap',  password='LdapPass')
conn.bind()

#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')

#Ziehen um
conn.modify_dn('cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap', 'cn=sample-name', new_superior='ou=sample-unit-move,dc=sample-component,dc=sample-ldap')

#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.190680
    cn: sample-name
    objectClass: inetOrgPerson
    sn: test
    st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.194679
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]
=======================
[DN: cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.233686
    cn: sample-name
    objectClass: inetOrgPerson
    sn: test
    st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.236675
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]

Sie können sehen, dass Sie mit cn Sample-Name von Sample-Unit zu Sample-Unit-Move verschoben haben. Darüber hinaus wurden die darin enthaltenen Attribute wie zuvor zusammen verschoben.

Verschieben von Entitäten mit Writer

Sie können die Bewegung von Entitäten mit Writer mithilfe von Writer's entry_move () `ändern. Geben Sie wie bei "entry_rename ()" den Pfad vor der Änderung an, wenn Sie den Writer lesen, und geben Sie den Pfad nach der Änderung in "entry_move ()" als vollständigen Pfad an. Bitte beachten Sie hier, dass der Name der verschobenen Entität nicht im Pfad enthalten sein darf und nicht in einen nicht vorhandenen Pfad verschoben werden kann.

main.py



#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')

#Laden Sie das Verschiebungsziel in Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)

#Wert verschieben
data_writer[0].entry_move('cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap')

#Reflexion der Änderungsergebnisse
data_writer.commit()

#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:33.946805
    cn: sample-name
    objectClass: inetOrgPerson
    sn: test
    st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:33.952774
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]
=======================
[DN: cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:34.045188
    cn: sample-name
    objectClass: inetOrgPerson
    sn: test
    st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:34.051225
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]

Sie können sehen, dass Sie mit cn Sample-Name von Sample-Unit zu Sample-Unit-Move verschoben haben. Darüber hinaus wurden die darin enthaltenen Attribute wie zuvor zusammen verschoben.

Löschen

Löschen Sie nur über die Verbindung

Wenn Sie eine Entität löschen möchten, verwenden Sie `delete ()` von Connection. Sie können es löschen, indem Sie für diese Funktion dn angeben. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.

main.py



#Vor dem Löschen anzeigen
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)
print('=======================')

#Löschen Sie durch Angabe des Pfads
ou_result = conn.delete('cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(ou_result)

#Nach dem Löschen anzeigen
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.281937
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.281937
]
=======================
True
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.322233
]

Sie können sehen, dass der cn von sample2 nach dem Löschen verschwindet.

Sie können auch alle löschen, indem Sie sie mit der Erfassung kombinieren.

main.py



conn.search('dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
for entry in conn.entries:
    del_result = conn.delete(entry.entry_dn)
    print(del_result)

Mit Writer löschen

Wenn Sie eine Entität löschen möchten, verwenden Sie Writer's entry_delete () . Rufen Sie nach dem Erstellen des Writers einfach die Entität `` entry_delete ()` `` auf, genau wie bei einer früheren Writer-Operation. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.

main.py



#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')

#Laden Sie das Verschiebungsziel in Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)

#Löschen Sie den Wert
data_writer[0].entry_delete()
data_writer.commit()

#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())

Ergebnis


[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.155112
    cn: sample-name
    objectClass: inetOrgPerson
    sn: test
    st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.160111
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]
=======================
[DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.264725
    cn: sample-name2
    objectClass: inetOrgPerson
    sn: test
    st: sample
]

Wenn Sie sich das Ergebnis nach dem Löschen ansehen, sehen Sie, dass der cn des Beispielnamens weg ist.

Sie können auch alle löschen, indem Sie die Suchbedingungen ändern

main.py



#Lassen Sie Writer den oberen Pfad lesen
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)

#Löschen Sie alle Werte
for data_entity in data_writer:
    data_entity.entry_delete()

abschließend

Wir konnten die für den Betrieb von LDAP erforderlichen Ergänzungen, Suchen, Löschungen und Änderungen zusammenfassen. Darüber hinaus sind einige Verzeichnisoperationen eindeutig, z. B. Verschiebungen und Umbenennungen, über die RDB nicht verfügt. Selbst wenn es die Funktion hat, Daten auf die gleiche Weise zu speichern, dachte ich, dass es bequemer wäre, wenn RDB und LDAP richtig verwendet werden, da es deutliche Unterschiede gibt.

Recommended Posts

Verschieben Sie Daten mit Python Change / Delete (Writer und Reader) nach LDAP.
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Aufbau einer LDAP-Umgebung: 7] Hinzufügen / Suchen / Ändern / Löschen von Benutzern mit Python
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datenpipeline-Aufbau mit Python und Luigi
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Konvertieren Sie Excel-Daten mit Python in JSON
Fraktal zum Erstellen und Spielen mit Python
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
[Python] Erstellen einer Wörterbuchtypliste, Hinzufügen / Ändern / Löschen von Elementen und Extrahieren mit einer for-Anweisung
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Liste des zu verschiebenden und zu merkenden Python-Codes
Datenanalyse mit Python 2
So kratzen Sie Bilddaten von Flickr mit Python
Ich möchte die Optimierung mit Python und CPlex behandeln
Ändern Sie die IP-Einstellungen mit Python in ACL von conoha
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Lesehinweis: Einführung in die Datenanalyse mit Python
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Untersuchen Sie den Java- und Python-Datenaustausch mit Apache Arrow
Ordnererstellung / Verschieben / Komprimieren / Löschen von Dateien mit Python
Datenanalyse mit Python
Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
Ich möchte Daten mit Python analysieren können (Teil 3)
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich möchte Daten mit Python analysieren können (Teil 1)
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Ich möchte Daten mit Python analysieren können (Teil 4)
[Teil 2] Crawlen mit Python! Klicken Sie auf die Webseite, um sich zu bewegen!
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Laden Sie Dateien mit Django-Speicher in Google Cloud Storages hoch und löschen Sie sie
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3