PyMongo

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

Hallöchen,

ich arbeite gerade mit Pandas + MongoDB.
Erfolgreich verbunden ist es schonmal. Nun aber folgendes Problem:

Code: Alles auswählen

NumberInt(1593174121)
Ich bekomme die Typeninfo mit geschickt. Ist zwar geil, kann ich aber nicht wirklich mit arbeiten, weil python das alles als String interpretiert.
Hier mein Code:

Code: Alles auswählen

df = pd.DataFrame(list(client.db.collection.find()))
Ich kenne das Problem. Die Collection wird mit

Code: Alles auswählen

client.db.collection.find()
komplett gefetched. Aber auch hier bekomme ich die Typeninfo.
Im find habe ich auf Anhieb keinen Parameter gefunden, der den Typen verbirgt. Es gibt auch bson. Allerdings bietet das kein Modul für NumberInt an. Und selbst wenn: Der Typ einer "Spalte" ist nicht statisch. Mal ist da ein Int, mal ein Longint. Und eigentlich soll es ein Timestamp sein.

Die Datenbank ist nicht von mir. Ich soll "nur" damit arbeiten.

Hilfe wäre klasse.
Vielen Dank und LG
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Freumel: Hat das wirklich den Datentyp `str`? Das sieht fast so aus als wenn das da tatsächlich so als Zeichenkette in der Datenbank steht und das wäre dann ein Problem was jemand verursacht hat, der diese Daten so als Zeichenkette in die Datenbank geschrieben hat.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Freumel
User
Beiträge: 69
Registriert: Donnerstag 25. Januar 2018, 13:47

__blackjack__ hat geschrieben: Dienstag 13. Oktober 2020, 11:56 @Freumel: Hat das wirklich den Datentyp `str`? Das sieht fast so aus als wenn das da tatsächlich so als Zeichenkette in der Datenbank steht und das wäre dann ein Problem was jemand verursacht hat, der diese Daten so als Zeichenkette in die Datenbank geschrieben hat.
Uff - das ist es!
Danke!!

Es liegt ein DB Dump vor welches hochgeladen wurde. Dieser Dump besteht aus typisierten JSONs. Vermutlich ist da was schief gegangen.
Ich frage mal nach.

Vielen Dank für diesen Hinweis!
Benutzeravatar
__blackjack__
User
Beiträge: 14012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Freumel: Was sind denn „typisierte JSONs“?

Das Problem bei JSON ist, dass es wie JavaScript keine ganzen Zahlen kennt. In der MongoDB-Shell gibt es deshalb diesen `NumberInt()`-Wrapper, um in JavaScript sagen zu können, dass ein Wert vom Typ Int(eger) ist. Python macht die Unterscheidung zwischen Ganzzahlen und Gleitkommazahlen ja, also gibt es dort auch nicht diese Wrapperklasse.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Antworten