psycopg2: Einfaches select#

Eine Abfrage der Datenbank, was wird benötigt?

Eine virtuelle Umgebung + psycopg2

Python installieren und eine virutelle Umgebung einrichten, ist im Web schon viele male beschrieben worden und wird hier nicht wiederholt.

Installation von psycopg2#

pip install psycopg2

Ein erstes Skript#

Inhalt der Datei pg-simple-select.py

"""
Vorarbeiten

1. Datenbank "basics" angelgen
   create database basics
2. Relation anlegen
   \c basics
   \i bkzfrau-utf8.sql
2. Benutzer "basics_user" anlegen
   CREATE USER basics_user WITH PASSWORD 'basics';
3. Rechte
   GRANT SELECT ON gewaesser TO basics_user;

"""

import psycopg2

connect_str = """dbname='basics'
user='basics_user' host='localhost'
password='basics'"""

conn = psycopg2.connect(connect_str)

with conn:

    try:
        cursor = conn.cursor()
        sql = "SELECT * from bkzfrau where beruf like '%aal%'"
        cursor.execute(sql)
        rows = cursor.fetchall()
        antwort = "Die Antwort auf Ihre Frage lautet:"
        print(len(antwort) * '#')
        print(antwort)
        print(len(antwort) * '#')
        for row in rows:
            print(row)
    
    except Exception as e:
        # Rollback the transaction in case of an error
        conn.rollback()
        print(f"Error: {e}")

Aufruf und Ausgabe#

(py36) python pgtest001.py
##################################
Die Antwort auf Ihre Frage lautet:
##################################
(7744, 'EDV-Saalaufseherin    ')
(7833, 'Leiterin des Lochkartensaals  ')
(7744, 'Leiterin des Maschinensaals, EDV ')
(7924, 'Lesesaalaufseherin    ')
(7833, 'Lochkartensaalleiterin    ')
(7744, 'Maschinensaalleiterin (EDV)   ')
(9121, 'Obersaaltochter    ')
(7925, 'Saalaufseherin (Wächterin Ordnerin)  ')
(6290, 'Saalaufseherin, Industriemeisterin   ')
(9111, 'Saalbesitzerin    ')
(7056, 'Saalchefin (Croupiere)   ')
(7944, 'Saaldienerin    ')
(9122, 'Saalkellnerin    ')
(9127, 'Saalmädchen    ')
(6290, 'Saalmeisterin    ')
(9331, 'Saalreinigerin    ')
(9127, 'Saaltochter    ')
(7944, 'Theater-, Saaldienerin   ')

Weitere Beipiele#