ich möchte User-Daten aus einem AD lesen und in eine SQL Tabelle übertragen. Ich habe jetzt etwas Quelltext zusammen gezimmert und funktional geht es so weit. Jedoch bin ich nicht wirklich glücklich über die Lösung des Problems. Daher würde ich mich sehr über Anregungen von erfahrenen Python Programmieren freuen.
Den Teil der AD Abfrage habe ich entfernt, damit es Übersichtlicher wird. Einen Beispiel-User habe ich in der Variable results hinterlegt. Der Code ist aktuell nicht kommentiert. Ich bitte das zu entschuldigen. Im Moment werden auch noch nicht alle Einträge im Dictionary verarbeitet, was aber noch kommen soll.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
results = [{'telephoneNumber': ['99909-304'], 'info': ['799130'], 'wWWHomePage': ['www.dom.de'], 'physicalDeliveryOfficeName': ['C004'], 'name': ['Meier Karl'], 'co': ['Deutschland'], 'title': ['Sachbearbeiter'], 'facsimileTelephoneNumber': ['99909-77304'], 'company': ['PythonComp'], 'l': ['Tuxhausen'], 'st': ['Bayern'], 'department': ['EDV'], 'streetAddress': ['Bahnweg 2'], 'sn': ['Meier'], 'mail': ['Karl.Meier@PythonComp.de'], 'postalCode': ['84205'], 'displayName': ['Meier, Karl'], 'givenName': ['Karl'], 'initials': ['KM']}]
import sqlite3, os
if os.path.exists('mitarbeiter.db'):
print 'Entferne die alte Datenbank.'
os.remove('mitarbeiter.db')
else:
print 'Datenbank nicht vorhanden.'
con = sqlite3.connect('mitarbeiter.db')
con.text_factory = str
cur = con.cursor()
cur.execute("""CREATE TABLE personen (
nachname TEXT,
vorname TEXT,
personalnummer INTEGER,
telefon INTEGER,
fax INTEGER,
abteilung TEXT,
email TEXT)""")
# Dieser Abschnitt gefällt mir gar nicht. Das Auslesen von results muss besser gehen.
for line in results:
if 'info' in line:
# Variablen initialisieren, wenn mal ein Key im Dictionary fehlt
nachname = vorname = personalnummer = telefon = fax = abteilung = email = ''
if 'company' in line:
firma = line['company'][0]
if 'info' in line:
personalnummer = line['info'][0]
if 'department' in line:
abteilung = line['department'][0]
if 'givenName' in line:
vorname = line['givenName'][0]
if 'sn' in line:
nachname = str(line['sn'][0])
if 'streetAddress' in line:
strasse = line['streetAddress'][0]
if 'postalCode' in line:
postleitzahl = line['postalCode'][0]
if 'l' in line:
ort = line['l'][0]
if 'st' in line:
bundesland = line['st'][0]
if 'co' in line:
land = line['co'][0]
if 'mail' in line:
email = line['mail'][0]
if 'initials' in line:
initialen = line['initials'][0]
if 'physicalDeliveryOfficeName' in line:
buero = line['physicalDeliveryOfficeName'][0]
if 'telephoneNumber' in line:
telefon = line['telephoneNumber'][0]
telefon = telefon[-3:]
if 'facsimileTelephoneNumber' in line:
fax = line['facsimileTelephoneNumber'][0]
fax = fax [-5:]
if 'title' in line:
position = line['title'][0]
if 'wWWHomePage' in line:
homepage = line['wWWHomePage'][0]
if 'manager' in line:
vorgesetzter = line['manager'][0]
werte = (nachname, vorname, personalnummer, telefon, fax, abteilung, email)
print werte
sql = "INSERT INTO personen VALUES (?, ? ,? ,? ,? ,? ,?)"
cur.execute(sql, werte)
con.commit()
con.close()