Ich erstelle eine Flask-Anwendung, mit der Benutzer CSV-Dateien hochladen (mit verschiedenen Spalten), hochgeladene Dateien anzeigen, zusammenfassende Statistiken erstellen, komplexe Transformationen / Aggregationen durchführen können (manchmal über Sellery-Jobs) und dann die geänderten Daten exportieren. Die hochgeladene Datei wird in einen Pandas DataFrame eingelesen, der es mir ermöglicht, die meisten komplizierten Daten zu verarbeiten.
Ich würde mir wünschen, dass diese Datenrahmen zusammen mit den zugehörigen Metadaten (hochgeladene Zeit, ID des Benutzers, der die Datei hochlädt usw.) bestehen bleiben und für mehrere Benutzer verfügbar sein werden, um verschiedene Ansichten anzuzeigen. Ich bin mir jedoch nicht sicher, wie ich die Daten am besten in meine SQLAlchemy-Modelle integrieren kann (ich verwende PostgreSQL im Backend).
Drei Ansätze, die ich in Betracht gezogen habe:
PickleType
zerlegen und direkt in der Datenbank speichern. Dies scheint die einfachste Lösung zu sein, bedeutet aber, dass ich große binäre Objekte in die Datenbank stecken werde. DataFrame.to_json()
) und Speichern als json
type (wird dem Typ json
von PostgreSQL zugeordnet). Dies erhöht den Aufwand für die Analyse von JSON bei jedem Zugriff auf den DataFrame, ermöglicht aber auch die direkte Bearbeitung der Daten über PostgreSQL JSON-Operatoren . Gibt es angesichts der Vor- und Nachteile von jedem (einschließlich derer, die mir nicht bekannt sind), eine bevorzugte Möglichkeit, Pandas DataFrames in SQLAlchemy-Modelle einzubauen?
Gehen Sie zur JSON- und PostgreSQL-Lösung. Ich bin auf einem Pandas-Projekt, das mit dem Pickle-on-File-System begann, und lud die Daten in ein Klassenobjekt für die Datenverarbeitung mit Pandas ein. Als die Daten jedoch groß wurden, haben wir mit SQLAlchemy / SQLite3 gespielt. Jetzt stellen wir fest, dass die Arbeit mit SQLAlchemy / PostgreSQL noch besser ist. Ich denke, unser nächster Schritt wird JSON sein. Habe Spaß! Pandas rockt!
Tags und Links python sqlalchemy pandas flask