Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Python – MySQL Verbindung mit mysql.connector

Veröffentlicht am 26. März 2023 von Christian Piazzi Hinterlasse ein Kommentar , Aktualisiert am 28. März 2023
Geschätzte Lesezeit: 1 Minute

Zur Zeit bin ich dabei einen alten php Prototypen vernünftig als Microservice zu implementieren. Dabei schaue ich mir ein paar unterschiedliche Methoden an, wie man auf eine MySQL Datenbank zugreifen kann. Die erste möchte ich heute in diesem Artikel vorstellen.

Für die ersten Testen habe ich ganz einfach angefangen. In Python gibt es dafür das Paket mysql-connector. Installieren kann man das Paket einfach mit pip.

1
pip install mysql-connector

Erste Datenbankabfrage

Als erstes müssen wir das Paket im Skript importieren. Anschließend muss eine Datenbank Verbindung aufgebaut werden. Das ganze sieht bei mir dann so aus:

1
2
3
4
5
6
7
8
9
10
from mysql.connector import connect
 
cnx =connect(
        host="192.168.10.24",
        port="3307",
        user="camping",
        password="Password123!",
        database="camping"
    )
 

Nachdem wir ein Objekt haben, mit dem wir uns gegen die Datenbank verbinden können, müssen wir nun noch eine Abfrage an die Datenbank schicken. Dafür erstellt man als erste einen Cursor und ruft diesen anschließend mit execute auf.

Execute braucht dafür ein Select Statemant.

In der nächsten Zeile werden mittels cursor.description die Spaltennamen der Tabelle in der Variablen row_headers gespeichert.

Mit fetchall() wird das im cursor hinterlegte Statement ausgeführt. Das Ergebnis speichere ich in der results Variable.

1
2
3
4
5
6
7
 
cursor = cnx.cursor(buffered=True)
cursor.execute('SELECT * from campground')
 
row_headers=[x[0] for x in cursor.description]
results = cursor.fetchall()
 

Der Rest ist nun standard Python Code, indem wir die Werte aus der Datenbank in ein JSON Format umwandeln.

1
2
3
4
5
6
json_data=[]
for result in results:
    json_data.append(dict(zip(row_headers,result)))
 
data = json.dumps(json_data,use_decimal=True)
 

Eigene Datenbankklasse für ein kleines Projekt

Ich habe mal eine kleine Python Klasse angefangen, die schon ein paar Abfragefunktionen enthält. Es ist noch nicht viel, aber ich will es hier troztdem mal teilen um zu zeigen, wie man ein eine solche Klasse anfangen kann.

Konfigurationsparameter sind hier in ein yaml Datei ausgelagert, um diese später ohne manuelle Änderung in der Klasse konfigurieren zu können.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import yaml
import simplejson as json
 
from mysql.connector import connect
 
 
class Database:
    def __init__(self,db):
 
        yaml_file = open('config.yaml', 'r')
        cfg = yaml.load(yaml_file,Loader=yaml.Loader)
        self.cnx = connect(
            host=cfg['host'],
            port=cfg['port'],
            user=cfg['user'],
            password=cfg['password'],
            database=db
        )
 
    def get_db_entries_by_list(self,table, list):
 
        columns = ','.join(list)
        query = 'SELECT {} from {}'.format(columns,table)
        print('query: {}'.format(query))
        cursor = self.cnx.cursor(buffered=True)
        cursor.execute(query)
 
        row_headers = [x[0] for x in cursor.description]
        results = cursor.fetchall()
 
        json_data = []
        for result in results:
            json_data.append(dict(zip(row_headers, result)))
        data = json.dumps(json_data, use_decimal=True, ensure_ascii=False)
 
        return data
 
 
    def get_all_db_entries(self,table):
        result = self.get_db_entries_by_list(table,['*'])
        return result
 
 

Ich denke es ist ein guter Einstiegspunkt für die Entwicklung einer eigenen kleinen Datenbank Klasse in Python. Gebt mir gerne mal Feedback ob ihr gerne mehr solche Code Snippets sehen möchtet.

Kategorie: Allgemein

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Neueste Kommentare

  • Prometheus Installation unter Ubuntu - Modius - Techblog bei Prometheus Installation unter CentOS
  • Rainer bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2025 · Outreach Pro on Genesis Framework · WordPress · Anmelden