Seite 2 von 2

Re: SQL-Abfrage mit Python starten

Verfasst: Montag 4. Oktober 2010, 14:40
von BlackJack
@AVFuchs: RDBMS haben in der Regel kein Verzeichnis oder einen Dateinamen als Schnittstelle nach aussen, sondern laufen als Server-Prozess.

SQL-Datenbanken haben zwar SQL als Gemeinsamkeit, die Art des Zugriffs auf den Server ist aber immer leicht unterschiedlich. Man braucht einen Treiber bzw. eine passende Python-Schnittstelle um über SQL mit der DB zu kommunizieren. Deswegen sind die Kenntnis von der konkreten Serversoftware und den Zugangsdaten dazu, wichtig um darauf zugreifen zu können.

Du müsstest also herausfinden welche Serversoftware tatsächlich läuft, also ob die Vermutung PostgreSQL zutrifft und welche Version es ist. Und dann brauchst Du ein Python-Modul das sich mit der konkreten DB verbinden kann. Auf Python-Seite gibt's für die gängigen SQL-Datenbaken Module, welche die Python DB-API 2.0 implementieren. Die allgemeine Doku dazu sollte man zumindest mal überflogen haben. Die gibt's irgendwo auf der Python-Webseite bei den PEPs (Python Enhancement Proposals).

So ähnlich wie der Code-Schnippsel wird's bei Dir dann später wohl auch aussehen. Hoffentlich nicht genau so, denn das zusammensetzen von Zeichenketten mittels ``+`` und einfügen von Werten mittels `str()`-Umwandlung sieht mehr nach BASIC als nach Python aus. Und insbesondere bei SQL sollte man Werte nicht selbst in die Abfragezeichenkette hineinformatieren, sondern dass dem Datenbankmodul überlassen.

Wenn Du die Verbindung zur DB hinbekommen hast, müsstest Du wissen wie die Daten in der DB organisiert sind, also wie die Tabellenstruktur aussieht, und welche Daten Du da heraushaben möchtest. Mit den Informationen kannst Du dann anfangen SQL-Anfragen zu schreiben.

Re: SQL-Abfrage mit Python starten

Verfasst: Montag 4. Oktober 2010, 14:56
von AVFuchs
@ BlackJack: Erstmal danke für die ausführliche Antwort. Damit kann ich mir das jetzt erstmal alles richtig gut vorstellen und weiß wo ich anpacken muss.

Ich werde nochmal nachhaken bezüglich der fehlenden Infos und wenn ich diese habe werde ich mich nochmal melden bzw. probier schon mal was hinzubekommen. Vielleicht war auch PostgreSQL 8.3 gemeint und es war nur ein Zahlendreher drin. Ich werde es herausfinden. :mrgreen: Schon mal danke für die Hilfe.

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 09:30
von AVFuchs
Hallo da bin ich wieder. :)

Also ich habe jetzt alle notwendigen Zugangsdaten und die RDBMS Version die auf dem Server läuft ist: PostgreSQL 8.3.

Ich habe mich auf der Python Seite nun auch schon ein bisschen weiter umgkuckt: Python.org
Da sind so viele Möglichkeiten um mit PostgreSQL zu arbeiten über Python aber welchen Treiber soll/muss ich den nun wählen???

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 10:17
von BlackJack
@AVFuchs: Einen der auf Deiner Zielplattform und mit Deiner Python-Version funktioniert. Ich habe psycopg2 schonmal verwendet. An dem wird auch anscheinend aktiv entwickelt. Falls das auf einem Linux läuft, würde ich die Wahl auch davon abhängig machen, welche Module über die Paketverwaltung installierbar sind.

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 10:36
von /me
AVFuchs hat geschrieben:Da sind so viele Möglichkeiten um mit PostgreSQL zu arbeiten über Python aber welchen Treiber soll/muss ich den nun wählen???
Meine Empfehlung: Psycopg2

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 10:41
von AVFuchs
Ok. Dann probiere ich mal psycopg2.

Dann werde ich einfach mal damit versuchen rumzubasteln und was hinzukriegen.
Und mit diesem Treiber kann ich dann auch direkt SQL Befehle einbinden für die Abfrage einbinden???

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 11:13
von Hyperion
AVFuchs hat geschrieben:
Und mit diesem Treiber kann ich dann auch direkt SQL Befehle einbinden für die Abfrage einbinden???
Es wurden dazu doch schon genügend Quellen genannt. Neben dem PEP wäre auch der Abschnitt in der Python-Doku zu SQLite aufschlussreich gewesen. Zudem hätte Dir ein schneller Blick in die Doku verraten, dass das natürlich geht.

Solltest Du Python3 verwenden, kann ich auch noch http://python.projects.postgresql.org/ empfehlen.

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 11:14
von BlackJack
@AVFuchs: Das Modul implementiert die Python DB-API 2.0 und ja mit der kann man SQL-Anfragen an die Datenbank absetzen. Für das Modul gibt's aber auch eine IMHO ganz gute Dokumentation. Gleich das erste Kapitel -- Basic Module Usage -- zeigt ein recht umfangreiches Beispiel der Grundfunktionalität.

Dort gibt es auch eine Warnung die man im Zusammenhang mit SQL gar nicht oft genug sagen kann:
http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters hat geschrieben: Warning Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
Sehr schön formuliert wie ich finde. :-)

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 11:47
von Rebecca
BlackJack hat geschrieben:Dort gibt es auch eine Warnung die man im Zusammenhang mit SQL gar nicht oft genug sagen kann:
http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters hat geschrieben: Warning Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
Sehr schön formuliert wie ich finde. :-)
http://xkcd.com/327/ :D

Re: SQL-Abfrage mit Python starten

Verfasst: Freitag 8. Oktober 2010, 15:16
von Käptn Haddock
Ich würde mich dann erst mal mit den Grundlagen zu Postgresql und psycopgsql2 befassen, hier gibt es dazu einige sehr gute und anschauliche Beispiele. Danach kannst du dich um Dinge wie SQLAlchemy kümmern, falls das notwendig ist.

Gruß Uwe