i

DB-Zugriff über Python - Beispiel

SQL Fenster Vielleicht hast du ja das Beispiel ganz am Anfang des Kapitels ausprobiert, bei dem dynamisch aus der terra-DB Orte in einer Karte markiert wurden. Für die Webseite wurde dies mit der Sprache PHP realisiert. Aber ist das auch in Python möglich?

Vorbereitung von Python

Python bringt von sich aus schon viele Bibliotheken mit, um die Funktionalität zu erweitern (sicher hast du schon einige davon verwendet, wie z.B. random, turtle oder math). Auch für den Zugriff auf eine MySQL (oder MariaDB)-Datenbank gibt es eine solche Bibliothek, die du aber leider erst noch herunterladen und installieren musst.

Unter dem Link http://dev.mysql.com/downloads/connector/python/ findest du den sogenannten MySQL Connector für Python. Lade die Version für deine Python-Version herunter (du musst dich dafür nicht bei Oracle anmelden - der Link zum direkten Download ist etwas versteckt). Python-Version in der IDLE Deine Python-Version findest du z.B., wenn du den Python-Interpreter (Idle) startest oder mit folgendem Python-Befehl:

import sys
print(sys.version)

Installiere dann den Connector; dafür brauchst du leider in der Regel Administrationsrechte auf deinem Rechner, evtl. muss dein Lehrer da helfen.

Auch für Thonny kann die Bibliothek für MySQL installiert werden. Lade dazu die *.whl-Datei unter pypi.org herunter (nicht speziell für ein Betriebssystem ...none-any.whl).

Gruppieren
  1. Der Aufruf des Import führt zu einer Fehlermeldung.
  2. Im Menü "Werkzeuge / Verwalte Pakete" können weitere Pakete installiert werden.
  3. Wähle "Installiere mit lokalen Dateien" aus.
  4. Suche die heruntergeladene *.whl-Datei. Diese wird dann installiert.
  5. Das neue Paket ist in der Liste sichtbar und kann verwendet werden.

Klicke auf die einzelnen Schritte zur Veranschaulichung.

Ein erstes Beispiel

Jetzt kannst du schon das erste Beispiel einmal ausführen (Quelltext). Das folgende Programm greift auf die terra-DB zu und gibt die Namen und Einwohnerzahlen der Kontinente aus. Dazu musst du das Programm aber wahrscheinlich etwas anpassen:

  • Als Servername kannst du localhost verwenden, wenn die Datenbank auf deinem Rechner läuft. Hast du MySQL (oder MariaDB) überhaupt schon gestartet?
  • Der Benutzer webterra ist vielleicht noch vorhanden, wenn du das letzte Kapitel bearbeitet hast. Ansonsten kannst du zum Test auch einmal das Administratorkonto (root) verwenden.
  • Das Passwort musst du anpassen (oder du hast dir im letzten Kapitel kein gutes Passwort vergeben).
import mysql.connector # neue Bibliothek

Servername = 'localhost' # Rechnername (localhost ist dein eigener Rechner)
Benutzer   = 'webterra'  
Passwort   = 'pwd'
Datenbank  = 'terra'

# Verbindung mit der Datenbank
con = mysql.connector.connect(
            host     = Servername,
            user     = Benutzer,
            password = Passwort)
con.database = Datenbank


# SQL-Befehl ausführen
cursor = con.cursor()
SQLBefehl = '''
   SELECT Name, Einwohner 
     FROM kontinent
'''
cursor.execute(SQLBefehl)


# Durchlaufen der Ergebnisse
row=cursor.fetchone()
while (row!=None):
  print(row[0], row[1])
  row = cursor.fetchone()

# Ende der Verarbeitung
cursor.close()
# Abmelden
con.disconnect()
Eigentlich veranschaulichen die folgenden beiden Zeilen besser, was passiert (sie ersetzen die Zeilen 9-12. In neueren Versionen des MySQL-Connectors scheint es aber nicht mehr möglich zu sein, sich ohne Benutzer zu verbinden.
con = mysql.connector.connect(host=Servername)
con.cmd_change_user(username = Benutzer, password = Passwort)

Aufgabe

Vollziehe die wesentlichen Elemente des Programms nach. Ändere es so ab, dass es

  1. Die Namen und Einwohner aller Orte in Rheinland-Pfalz ausgibt.
  2. Auch noch die Länge und Breite der Orte angezeigt werden.

Suche

v
3.4.3.1
dev.inf-schule.de/datenbanksysteme/zugriff/pythonzugriff/einstieg_bsp
dev.inf-schule.de/3.4.3.1
dev.inf-schule.de/@/page/Wf2iJ7F2CDM8GtlE

Rückmeldung geben