2016-05-13 10 views
0

Ich arbeite an einer iOS-Shopping-Anwendung. Und ich benutze Python, um mein Backend zu schreiben.mysql - Wie speichert man ein Python-Listenobjekt in mysql?

Wie für den Warenkorb Teil möchte ich eine Reihe von Produkt IDs in einem list Objekt speichern.

Übrigens verwende ich SQLAlchemy SQL-Abfragen zu verarbeiten.

Da ich nicht viel Erfahrung im Datenbank-Design habe, frage ich mich, was ist der beste Weg, um ein list Objekt in MySQL zu speichern.

Ich denke, das ist eine Eins-Beziehung Problem und ich frage mich ob ich eine dritte Tabelle außer für eine CartItem Tabelle ids Speicher Produkt Ide und eine Product Tabelle zu speichern Produkte?

Jemand sagte, dass serialization eine Wahl ist. Was ist serialization?

Oder kann ich Listenelemente einfach durch Komma teilen und als string speichern?

Ich habe einige Fragen Antworten genannt wie

Store list of values (such as interests)

store list of IDs mysql

How to store a dynamic List into MySQL column efficiently?

Antwort

0

ich eine App mit Python/Sqlalchemy für jemand vor kurzem hat einen Auftrag von einer Website zu platzieren . Was ich getan habe, war, 2 Tabellen zu erstellen. Einer speicherte die Artikel, die der Benutzer bestellt/bestellt hatte, und der andere enthielt die Bestellinformationen wie bestelltes Datum, Adresse, spezielle Anweisungen, Bestellnummer. Es war eine 1-Viele-Beziehung. Wenn der Benutzer die Artikel hinzufügte, die in den Status "In Bearbeitung" versetzt wurden, wurde er beim Bezahlen in den Status "Abgeschlossen" versetzt. So wusste ich jederzeit, was in seinem Einkaufswagen war und welche Artikel bereits bestellt worden waren. Ich habe alle Sendungen/Bestellungen über den anderen Tisch verfolgt.

Die Webapp läuft und läuft here, Sie müssen sich anmelden, um die Bestellfunktion zu testen.

0

Speichern einer einzelnen Zeichenfolge mit Komma getrennten IDs ist möglich, aber ich denke, es ist keine saubere Lösung. Es ist eigentlich ein Beispiel für die Serialisierung = Übersetzung eines Objekts in ein Format, das später gespeichert und rekonstruiert werden kann (wikipedia). Vor allem in einfachem Beispiel wie diese, würde ich vorschlagen, eine dritte Tabelle:

Ich verstehe nicht, was Sie in der Tabelle speichern CartItem, aber ich würde ein Schema ähnlich wie diese verwendet:

TABLE product 
------------- 
id | price | name | ... 
1 | 10 | socks | ... 
2 | 34 | shirt | ... 

TABLE user 
------------- 
id | name | ... 
1 | John | ... 

TABLE user_cart 
------------- 
user_id | product_id | count | ... 
1  | 1   | 5  | ... 
1  | 2   | 1  | ... 

Eine einzelne Zeile in der Tabelle user_cart wird verwendet, um eine Produkt/Benutzer-Beziehung zu speichern.

Mit SQLAlchemy können Sie den Einkaufswagen des Benutzers erhalten, indem Sie einfach z. User.cart_items nach einiger Konfiguration. Überprüfen Sie backref.