Vergleichen von 2 Spalten

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BoOnOdY hat geschrieben:Ich importiere die Daten jeden Tag aus ner .CSV in die Tabelle. Kann man da vieleicht gleich beim Importieren den Vergleich machen?
[...]
Wo find ich denn gute Tutorials, von mir aus auch ein Buch, in dem ich so was alles lerne?
Hallo Tim!

- Da stimme ich dir zu. Der Beste Zeitpunkt, um die Daten aufzubereiten ist der Datenimport.

- Bücher bei Amazon

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Bei dem Quelltext hattest du mir ja schon ma stark unter die arme gegriffen, außer der Benutzereingabe stammt ja alles von dir, aber ich hab den Quelltext jetzt verstanden :)

Code: Alles auswählen

import psycopg2 
import csv 
import datetime 


# Datenbank-Connection und -Cursor erstellen 
conn = psycopg2.connect(user = "Import", password = "import", database = "GBC") 
cur = conn.cursor() 

dateiname= raw_input("bitte geben sie den dateinamen ein: ")
# CSV-Datei öffnen 
f = file(dateiname, "r") 

# CSV-Datei dem Parser übergeben 
csvdata = csv.reader(f, delimiter = ';') 

# Jede, nicht leere, Zeile durchlaufen 
for row in ( row for row in csvdata if row ): 
    # 
    # Daten vorbereiten (in den korrekten Datentyp umwandeln) 
    # 
    data = []
    data.append(row[0]) 
    # Datum 
    d, m, y = ( int(val) for val in row[1].split(".") ) 
    data.append(datetime.date(y, m, d)) 
    # Uhrzeit 
    H, M, S, ms = ( int(val) for val in row[2].split(":") ) 
    data.append(datetime.time(H, M, S)) 
    # Eingangsport und Ausgangsport, Eingangsnummer und Ausgangsnummer 
    data += [int(row[3]), int(row[4]), row[5] or None, row[6] or None] 
    # Dauer 
    try: 
        data.append(int(row[7])) 
    except ValueError: 
        data.append(None) 
    # Fehler 
    data.append(row[8].strip()) 
    
    # 
    # Daten in DB schreiben 
    # 
    sql = """ 
    INSERT INTO call ( 
        callrefnummer,
        datum, 
        uhrzeit, 
        eingangsport, 
        ausgangsport, 
        eingangsnummer, 
        ausgangsnummer, 
        dauer, 
        releasecode 
    ) VALUES ( 
        %s,%s, %s, %s, %s, %s, %s, %s, %s 
    ) 
    
     
      """ 
  
        cur.execute(sql, data) 
    
    conn.commit() 

# CSV-Datei schließen 
f.close() 
 
# Datenbankverbindung trennen 
cur.close() 
conn.close()
Wie macht man das, dass die daten gleich bei diesem Prozess ergänzt werden?, wie stelle ich denn da so eine Abfrage rein, die mir die Daten gleich ergänzt? Hab da ga keine Ahung, wie ich das anstellen soll.
Wie verpacke ich die Abfrage da rein?

Würd mich sehr über ein bisschen Quelltext freuen :)


Viele Grüße Tim

PS: Dann werd ich mir ma so ein Buch Python und PostgreSQL bestellen. Dann kann ich das endlich richtig lernen :)
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Hy,
ich hab mir mal die Bücher angeguckt, das sind ja alles nur so allgemeine Pyhton Bücher ,,, welche über Python mit PostrgreSQL anbindung hab ich net gefunden ... muss ich mir da 2 Bücher kaufen?
Wär mir irgendwie lieber wenn das irgendwie irgendwo zusammen stehen würde.. wie das in Verbindung funktioniert.

Gruß Tim
BlackJack

Das sind ja im Grunde auch zwei komplett verschiedene und umfangreiche Welten die nur durch die DB-API 2 zusammengehalten werden. Irgend etwas spezielles gibt's da nicht was nicht auch für andere Datenbanken gelten würde.

Also ist es schon sinnvoller ein reines Python Buch und ein reines PostgreSQL Buch zu haben als eine Kombi. Mit der Kombi könnte jemand der Firebird oder MySQL einsetzen will nichts anfangen, die Python Informationen wären aber die gleichen. Umgekehrt soll es auch Leute geben, die PostgreSQL mit Java einsetzen wollen. Es gibt wahrlich komische Leute. :-)

Je nachdem wie viel Du im DB Bereich machen möchtest, wäre zusätzlich ein Buch über SQL und Datenbankentwurf sinnvoll. Da gibt's sicher Kombinationen, also PostgreSQL Bücher die auch den Entwurf einer DB mit abhandeln.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Also ich habe im moment dieses buch
http://www.galileocomputing.de/katalog/ ... itelID-747

Aber da stehen ja nur Grundlagen drinne.. vieleicht sollte ich mir noch mal eins über PostgreSQL kaufen ?? ( Will nur PostgreSQL benutzen)
und eins über Pyhton ...
gibts da irgend nen besonders berühmten oder guten Lehrfaden?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BoOnOdY hat geschrieben:gibts da irgend nen besonders berühmten oder guten Lehrfaden?
Wenn du schon mehr oder weniger programmieren kannst, dann ist Dive Into Python sehr empfehlenswert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Gut dann guck ich ma das ich mir das durch tutorials beibringe und dnan das buch kaufe.

So zur eigentlichen Frage,
Wie sage ich einen Programm:

Lies eine Zeile aus einer CSV aus
vergleiche einen Wert mit der tabelle "destinationen"
Schreibe die CSV Zeile in eine Datenbank+das "vergleichsergebnis" mit der größten übereinstimmung.

da wären ja dann 2 SQL- "abschnitte" drinnen .. wie sag ich dem denn, dass er das dann in eine variable setzen soll? das Ergebnis des ersten "sql-abschnittes"

Gruß Tim
Antworten