Hallo,
ich habe eine Verbindung zu zwei verschiedenen Datenbankservern hererstellt gehabt und habe dementsprechend zwei verschiedene cursor zu den jeweiligen Datenbanken aufgesetzt. Jetzt mache ich 2 verschiedene queries, wobei eine query aus der einen Tabelle der Datenbank und die andere aus der anderen Tabelle der anderen Datenbank kommt. Beide Tabelle haben eine gemeinsame Spalte und ich will sie jetzt joinen. Kann mir jemand dabei helfen wie man das in Python umsetzt?
LG
Verknüpfung der queries durch join
Also das es mit SQL direkt nicht geht, ist wahrscheinlich klar? Pandas dataframes sollten das Können. https://pandas.pydata.org/docs/referenc ... .join.html
@__deets__: so klar ist das nicht. Ordentliche Datenbanken können das: https://www.crunchydata.com/blog/unders ... stgres_fdw
Also ich habe folgendes:
Jetzt will ich die beiden queries mit einem join über verknüpfen sowas wie:
Ich wollte das ohne pandas machen. Gibt es ne andere Möglichkeit?
Code: Alles auswählen
cursor 1. execute('select type, descr from tt_tariff_type')
cursor 2. execute('select use_type, volume from cdr group by 1')
Code: Alles auswählen
Select descr, type, volume from tt_tariff_type join cdr on type=usage_type group by type
eine Möglichkeit beginnt mit so etwas wie...
Code: Alles auswählen
def join (cursor1, cursor2):
-
- User
- Beiträge: 18
- Registriert: Sonntag 20. September 2020, 14:20
Also - ohne Werbung machen zu wollen - schmöker 'mal in:
"Schrödinger programmiert Python (Das etwas andere Fachbuch)"
Hier ist (fast) alles erläutert.
Gruß Bossy39
"Schrödinger programmiert Python (Das etwas andere Fachbuch)"
Hier ist (fast) alles erläutert.
Gruß Bossy39
IngData-Henry
- __blackjack__
- User
- Beiträge: 13174
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Ich habe mir mal die Codebeispiele zum Buch angeschaut — da sind wie üblich ein paar gruselige Sachen dabei. Würde ich nicht uneingeschränkt empfehlen.
Es wird sich bei der Namensgebung nicht durchgehend an klein_mit_unterstrichen gehalten, es gibt hier und da dann auchMalMixedCase-Namen. Und so Namenszusätze wie `mein_*` oder `meine_*` werden auch nicht wirklich dadurch besser, dass sie Deutsch sind.
Doppelte führende Unterstriche. Die Datei dazu heisst ``PublicPrivate.py``.
Property wird am Anfang nicht als Dekorator verwendet, sondern wie gaaanz früher mit Methoden aufgerufen, die zudem dann auch noch öffentlich sind.
Komische Typtests die zu komischen Ergebnissen führen, zum Beispiel das die Methode `vedoppeln()` `None` zurück gibt, falls das Argument kein `int` oder `float` ist (mit `type()` getestet, also nicht mal abgeleitete Typen können verdoppelt werden). Oder das eine Zuweisung an ein Property nur mit von `list` und `tuple` abgeleiteten Typen funktioniert und sonst einfach ignoriert wird.
Die Vererbungsbeispiele sind kaputt, weil da wieder ein unnötiger und einschränkender Typtest drin ist, der dafür sorgt, das ein Attribut am Ende undefiniert ist was dann zwangsläufig zu einem Folgefehler führt. Und statt da in der abgeleiteten Klasse die `__init__()` von der Basisklasse aufzurufen, steht der nötige Code um das Exemplar zu initialisieren noch mal in der abgeleiteten Klasse.
Das Beispiel für eine Textdatei öffnet die ohne Kodierungsangabe — Und schreibt dann Text rein der nicht nur aus ASCII-Zeichen besteht.
Texte ohne Zeilenenden werden mit "\n".join(…) zusammengefügt und in eine Datei geschrieben — womit die letzte Zeile dann nicht sauber mit einem Zeilenende abgeschlossen ist.
Bei den Beispielen für Dateien und Ordner wird nicht `pathlib` verwendet (das Buch ist von 2021) und zeigt wie man sich mit `os.chdir()` durch Verzeichnisse bewegt. Yeah.
Das Tk-Beispiel für mehrere Fenster erzeugt mehrere `Tk`-Objekte.
Bei den Datenbankbeispielen ist die Bennennung Einzahl/Mehrzahl bei den Tabellen inkonsistent. Es wird ein TEXT-Feld als Primär- und Fremdschlüssel verwendet, wobei das der Name eines Virus ist. Das heisst man kann Virennamen nicht mehr einfach ändern.
CSV-Datei wird auch ohne Kodierungsangabe geöffnet und mit ``newline='\n'`` wo die Dokumentation ausdrücklich sagt, dass dort die leere Zeichenkette gesetzt werden muss.
Ach so: Nackte ``except:`` gibt's natürlich auch.
Es wird sich bei der Namensgebung nicht durchgehend an klein_mit_unterstrichen gehalten, es gibt hier und da dann auchMalMixedCase-Namen. Und so Namenszusätze wie `mein_*` oder `meine_*` werden auch nicht wirklich dadurch besser, dass sie Deutsch sind.
Doppelte führende Unterstriche. Die Datei dazu heisst ``PublicPrivate.py``.
Property wird am Anfang nicht als Dekorator verwendet, sondern wie gaaanz früher mit Methoden aufgerufen, die zudem dann auch noch öffentlich sind.
Komische Typtests die zu komischen Ergebnissen führen, zum Beispiel das die Methode `vedoppeln()` `None` zurück gibt, falls das Argument kein `int` oder `float` ist (mit `type()` getestet, also nicht mal abgeleitete Typen können verdoppelt werden). Oder das eine Zuweisung an ein Property nur mit von `list` und `tuple` abgeleiteten Typen funktioniert und sonst einfach ignoriert wird.
Die Vererbungsbeispiele sind kaputt, weil da wieder ein unnötiger und einschränkender Typtest drin ist, der dafür sorgt, das ein Attribut am Ende undefiniert ist was dann zwangsläufig zu einem Folgefehler führt. Und statt da in der abgeleiteten Klasse die `__init__()` von der Basisklasse aufzurufen, steht der nötige Code um das Exemplar zu initialisieren noch mal in der abgeleiteten Klasse.
Das Beispiel für eine Textdatei öffnet die ohne Kodierungsangabe — Und schreibt dann Text rein der nicht nur aus ASCII-Zeichen besteht.
Texte ohne Zeilenenden werden mit "\n".join(…) zusammengefügt und in eine Datei geschrieben — womit die letzte Zeile dann nicht sauber mit einem Zeilenende abgeschlossen ist.
Bei den Beispielen für Dateien und Ordner wird nicht `pathlib` verwendet (das Buch ist von 2021) und zeigt wie man sich mit `os.chdir()` durch Verzeichnisse bewegt. Yeah.
Das Tk-Beispiel für mehrere Fenster erzeugt mehrere `Tk`-Objekte.
Bei den Datenbankbeispielen ist die Bennennung Einzahl/Mehrzahl bei den Tabellen inkonsistent. Es wird ein TEXT-Feld als Primär- und Fremdschlüssel verwendet, wobei das der Name eines Virus ist. Das heisst man kann Virennamen nicht mehr einfach ändern.
CSV-Datei wird auch ohne Kodierungsangabe geöffnet und mit ``newline='\n'`` wo die Dokumentation ausdrücklich sagt, dass dort die leere Zeichenkette gesetzt werden muss.
Ach so: Nackte ``except:`` gibt's natürlich auch.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis