PostgreSQL-Tabellen mit Python ergänzen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

PostgreSQL-Tabellen mit Python ergänzen

Beitragvon BoOnOdY » Sonntag 17. September 2006, 10:25

Hy,
Ich habe mal wieder eine kleine Frage.

Wie Lese ich Daten mit Python aus einer Tabelle aus, vergleiche sie mit Daten aus einer 2ten und 3ten Tabelle und gebe sie dann mit diesen Daten ergänzt in eine letzte, andere Tabelle aus.

Also zum Beispiel

in der ersten Tabelle stehen
erste Zeile
Paulchen
Minka
Rex

zweite Zeile
3
2
1

in der zweiten

erste Zeile
1
2
3
zweite Zeile
Hund
Katze
Maus


und in der dritten tabelle soll dann stehen
Paulchen Maus
Minka Katze
Rex Hund


psycopg2 hab ich.

Sieht die SQL abfrage genau wie eine normale inner Join abfrage aus oder muss ich da was verändern?

Gruß Tim :)

[/code]
BlackJack

Beitragvon BlackJack » Sonntag 17. September 2006, 11:25

Warum willst Du das in eine dritte Tabelle schreiben? Dann sind die Daten mehrfach in der DB vorhanden. So etwas will man normalerweise vermeiden. Sowie an einer der beteiligten Tabellen dann etwas verändert wird, stimmen die Daten nicht mehr mit den anderen überein.

Ansonsten kann man das mit einem `INSERT tabelle (spalten, ...) SELECT ...` lösen. Die Daten aus dem SELECT werden in die angegebene Tabelle eingefügt.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Sonntag 17. September 2006, 11:59

[code=]INSERT INTO tab3 (name, art) VALUES (SELECT name,art FROM tab1 JOIN tab2 ON tab1.id=tab2.id)[/code]

Keine Ahnung ob das funktioniert. Hab das jetzt einfach mal aus dem Kopf geschrieben

Gruss
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Beitragvon BoOnOdY » Sonntag 17. September 2006, 12:17

Es is erwünscht, dass die Daten sich nicht mehr verändern, weil die Ausgangsdaten sich auch nicht mehr verändern. Denn die Nummer der Tiere kann sich ändern, aber Rex bleibt trozdem immer ein Hund.

Also ich schreib ma was, und dann stell ich noch eine konkrete Frage zu meinem Quelltext, bis denne

Danke schon ma für die Antworten :)

Gruß Tim
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: PostgreSQL-Tabellen mit Python ergänzen

Beitragvon gerold » Sonntag 17. September 2006, 13:10

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Beitragvon BlackJack » Sonntag 17. September 2006, 14:01

BoOnOdY hat geschrieben:Es is erwünscht, dass die Daten sich nicht mehr verändern, weil die Ausgangsdaten sich auch nicht mehr verändern. Denn die Nummer der Tiere kann sich ändern, aber Rex bleibt trozdem immer ein Hund.


Aber wenn sich die Ausgangsdaten nicht mehr verändern, kann man doch trotzdem eine Anfrage darauf stellen und muss sie nicht in eine weitere Tabelle schreiben. Oder einen View "drüberlegen" wie gerold vorgeschlagen hat.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Beitragvon BoOnOdY » Montag 18. September 2006, 08:52

Also es ist so, wir sagen die Tabelle mit den nummern und den Tierarten ändert sich jede Woche, aber wenn in der Woche 1 Rex mit der 1 ein Hund war, dann ist er in der Woche 2 mit der 1 eine Katze, sollte aber ein Hund sein,weil er ein Hund ist
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Montag 18. September 2006, 11:26

Hi

Du solltest einen Primary Key wählen/erstellen, der nicht geändert wird, sonst funktioniert das Datenbankdesign nur mit Triggers (ich denke nicht dass du die wirklich brauchst)

Warum ändert sich eine Liste der Tierarten jede Woche?

Gruss
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Beitragvon BoOnOdY » Montag 18. September 2006, 11:33

Das is nur ein Beispiel, die liste der Tiere ist in Wirklichkeit eine Preisliste, und die ändert sich jede Woche, aber es muss trozdem Protokolliert werden zu welchem Preis die Artikel verkauft wurden, also muss der Datensatz ausgelesen, ergänzt und wieder in eine neue Tabelle eingetragen werden.
Die Dantensätze haben in wikrlichkeit viel mehr spalten und auch einen primary Key
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Montag 18. September 2006, 11:39

Hi

Entweder speicherst du jede Änderung der Preisliste (Datumabhängig), dies wird jedoch mit der Zeit speicheraufwendig.

Die andere Möglichkeit ist in der Verkaufstabelle den Artikel mit dem aktuellen Verkaufspreis zu speichern.
Das wäre dann eine Tabelle mit:
ID, BestellID, ArtikelID, Preis, Datum, ...

Dann kannst du einfach bei jeder Bestellung den jeweiligen Artikel Verkaufspreis nachschlagen.

Gruss
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Beitragvon BoOnOdY » Donnerstag 19. Oktober 2006, 16:32

http://www.python-forum.de/topic-7561.html
hab die Frage mal ein bisschen konkreter gemacht.
Gruß Tim

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder