2009-08-21 10 views
0

Ich muss ein Python-Tupel (von Floats) in eine MySQL-Datenbank einfügen. Im Prinzip könnte ich es pickeln und als String einfügen, aber das würde mir die Chance geben, es nur durch Python zu finden. Alternative besteht darin, das Tupel nach XML zu serialisieren und die XML-Zeichenfolge zu speichern.Python-Tupel in eine MySQL-Datenbank einfügen

Welche Lösungen sind Ihrer Meinung nach auch möglich, mit dem Ziel, andere Dinge (z. B. eine Liste oder ein Objekt) zu speichern. Es von anderen Sprachen zu erholen ist ein Plus.

Antwort

2

Ich würde es in JSON serialisieren, das Paket simplejson oder das integrierte json-Paket in Python 2.6 verwenden.

Es ist einfach zu verwenden in Python, importierbar von praktisch jeder anderen Sprache, und Sie müssen nicht alle "was Tag sollte ich verwenden? Welche Attribute sollte dies haben?" Entscheidungen, die Sie in XML treffen könnten.

+0

Das Problem mit JSON ist, dass alles auf eine Zeichenkette reduziert wird. Wenn ich ein Tupel von ganzen Zahlen habe, möchte ich es als Tupel von ganzen Zahlen abrufen, nicht als Tupel von Strings. In Javascript macht dies keinen großen Unterschied, da es lose typisiert ist, aber in Python ist es eine andere Geschichte. Also nein, JSON ist in diesem Fall keine Option. –

+1

JSON erfordert nicht alles, um eine Zeichenfolge zu sein. Es verwendet JavaScript-native Typen: string, int, float, boolean, null. –

+0

oh, das ändert die Dinge dann. –

2

Wie wäre es mit JSON ... es ist kompakt und es gibt Dolmetscher in den meisten Sprachen dafür.

3

Machen Sie eine andere Tabelle und machen Sie eins-zu-viele. Versuchen Sie nicht, ein Programmiersprachen-Feature in einer Datenbank zu stopfen, wenn Sie es vermeiden können.

Wenn Sie unbedingt ein Objekt auf der ganzen Linie speichern müssen, sind Ihre Optionen etwas begrenzter. YAML ist wahrscheinlich die beste Kombination aus menschenlesbarem und programmlesbarem Code und verfügt über eine Syntax, um Klassen anzugeben, die Sie möglicherweise verwenden können.

+0

Ja, Sie haben einen Punkt, aber. Angenommen, ich muss eine xyz-Koordinate für einen Punkt ausdrücken, und ich habe für jeden Punkt eine Zeile. Sie hätten zwei Möglichkeiten: Entweder haben Sie drei verschiedene Spalten für x y und z, oder Sie speichern die tupòle als einzelne Entität in einer Spalte. In diesem Fall sind die Dinge einfach, weil Sie wissen, wie viele Elemente Ihr Tupel machen (drei), aber in meinem Fall weiß ich nicht a priori. Ich könnte eine Eins zu viele machen und jedes Element des Tupels einfügen, Sie haben Recht, aber ich befürchte, dass dies das Problem einfach verschieben würde (z. B. ein Tupel von Tupeln) –

+0

Das ist also anders, obwohl es ein seltsamer Fall ist. Ich halte mich an die YAML-Empfehlung. Einfach zu lesen und zu schreiben, hat Bindungen zu einer C-Bibliothek in den meisten Sprachen, respektiert Datentypen und unterstützt beliebige benutzerdefinierte Klassennamen. – Eevee

Verwandte Themen