Ich habe mit den Grundlagen von Python für einige Zeit gearbeitet und fällt auf mysql
für Datenanalyse zurück. Jetzt möchte ich lernen, wie man OOP auf die Python-Art macht, aber mit all dem Lesen über Klassen, Objekte und deren Attribute: Ich habe mich auf dem Weg verlaufen und experimentiert nach Richtungen.OOP-Workflow für Daten
Ich benutze Python-Modul ciscoconfparse
, alle Schnittstellen zu lesen, und für jede Schnittstelle durch Tabellen durchlaufen, um zu filtern und mehr (Lieferant) Daten zu bekommen, die ich brauche. Als Beispiel ich folgende Daten haben kann:
dict = {
'Customer' : 'customer1',
'supplier-con' : 'id823985',
'hostname' : 'router01',
'interface' : 'gig0/1',
'subinterface' : '101',
'dot1q' : '111',
'qinq' : '10101'
}
Baum klug, um die Beziehungen zu zeigen:
die Tasten wie das Beispiel ohne die Werte unten aussehen:
Customer 1 : customer1
----supplier-con : id823985
-------hostname : router 1
----------interface : gi0/1
--------------subinterface : 101
--------------subinterface : 111
Customer 1 : customer1
----supplier-con : id45223
-------hostname : router 5
----------interface : gi0/3
--------------subinterface : 107
--------------subinterface : 888
Customer 2 : customer2
----supplier-con : id625544
-------hostname : router 2
----------interface : gi0/2
--------------subinterface : 202
--------------subinterface : 222
Sie können sehen, dass die Schnittstelle mehrfach mit mehr Subschnittstellen verwendet wird. Dies gilt auch für den Hostnamen und könnte für andere Details auf dem Weg sein.
In welcher Art und Weise sollte ich daran denken, 50000 Einträge im Speicher zu verwalten? Oder bin ich besser mit einer Datenbank?
Ich weiß, wie man dict-in-dicts erstellt, aber nicht, wie man Beziehungen untereinander unter Verwendung von tatsächlichen Objekten herstellt.
Siehe [meine Antwort] (http://stackoverflow.com/a/15420716/355230) auf die Frage [_Was ist die beste Datenstruktur zum Speichern eines Satzes von vier (oder mehr) Werten? _] (Http: //stackoverflow.com/questions/15418386/what-is-the-best-data-structure-for-storing-a-set-of-our-or-more-values), die Nachschlagetabellen für jeden eindeutigen Wert von jedem erstellt Feld in der Datenbank (wenn und wenn benötigt). – martineau
Beachten Sie außerdem, dass ein Schlüssel einem Wert, bei dem es sich um einen Container handelt, z. B. den genannten Diktaten, als Listen-in-dicts zugeordnet werden kann. So könnte beispielsweise der Schlüssel "subschnittstellen" ein Wert sein Liste von Elementen, wie '['101', '111']' oder sogar eine Liste von Wörterbüchern und diese Wörterbücher können andere Elemente in der Datenstruktur sein. Python referenziert, so dass die Daten in den Wörterbüchern nicht jedes Mal verdoppelt werden, wenn sie referenziert werden. – martineau
Vielen Dank Martineau, das sind sehr gute Antworten, mit denen ich arbeiten kann, besonders Ihr gut geschriebenes CSV-Beispiel. Das werde ich versuchen. – Gaston