@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.
SQL-Abfrage mit Python starten
@ 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.
Schon mal danke für die Hilfe.
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.

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???

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???
Zuletzt geändert von Anonymous am Freitag 8. Oktober 2010, 10:13, insgesamt 1-mal geändert.
Grund: Link repariert.
Grund: Link repariert.
@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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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.AVFuchs hat geschrieben:
Und mit diesem Treiber kann ich dann auch direkt SQL Befehle einbinden für die Abfrage einbinden???
Solltest Du Python3 verwenden, kann ich auch noch http://python.projects.postgresql.org/ empfehlen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@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:
Dort gibt es auch eine Warnung die man im Zusammenhang mit SQL gar nicht oft genug sagen kann:
Sehr schön formuliert wie ich finde.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.

- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
http://xkcd.com/327/BlackJack hat geschrieben:Dort gibt es auch eine Warnung die man im Zusammenhang mit SQL gar nicht oft genug sagen kann:Sehr schön formuliert wie ich finde.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.

Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- Käptn Haddock
- User
- Beiträge: 169
- Registriert: Freitag 24. März 2006, 14:27
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
Gruß Uwe
---------------------------------
have a lot of fun!
have a lot of fun!