Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

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.

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:

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)
con.cmd_change_user(username = 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()

Hinweis

In einigen Versionen des MySQL-Connectors scheint es Probleme mit der Funktion cmd_change_user zu geben. In diesem Fall kannst du die drei Zeilen 9 und 10 durch Folgendes ersetzen:

con = mysql.connector.connect(
            host     = Servername,
            user     = 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.
X

Fehler melden

X

Suche