Aplikacja bazodanowa w Python

Artykuł opisuje najprostsze podejście do tworzenia aplikacji bazodanowych w języku Python. Przeznaczony jest dla początkujących programistów języka Python, którzy nie mają jeszcze większego doświadczenia z programowaniem baz danych w tym języku.

Opiszę przykładową aplikację bazodanową w języku Python współpracującą z popularnym serwerem baz danych MySQL (dostępnym bezpłatnie na stronie https://www.mysql.com/downloads/). Zakładam, że serwer baz danych MySQL jest już poprawnie zainstalowany, skonfigurowany i uruchomiony. Przed uruchomieniem opisywanej aplikacji bazodanowej na serwerze baz danych należy stworzyć przykładową tabelę o nazwie PROGRAMISTA i kolumnach ID, IMIE i NAZWISKO, na przykład następującym poleceniem języka SQL:

CREATE TABLE programista(id INT PRIMARY KEY AUTO_INCREMENT, imie VARCHAR(80), nazwisko VARCHAR(80))

Aplikacja bazodanowa w Python z modułem _mysql

Najprostszym podejściem do tworzenia aplikacji bazodanowych w języku Python jest wykorzystanie modułu _mysql. Jeśli nie jest zainstalowany domyślnie, można zainstalować go za pomocą programu pip, instrukcją pip install mysql-python, lub programu conda, instrukcją conda install mysql-python, w zależności od używanej wersji języka Python.

Przykładowy program języka Python wykorzystujący moduł _mysql do połączenia się z serwerem baz danych MySQL znajduje się poniżej.

import _mysql
import sys

try:
    conn = _mysql.connect('localhost', 'programista', 'iProgramujesz.pl', 'programista')

    conn.query("SELECT * FROM programista")
    result = conn.use_result()
    row = result.fetch_row()

    while len(row) > 0:
        print "Imię: %s \t Nazwisko: %s" % (row[0][1], row[0][2])
        row = result.fetch_row()

except _mysql.Error, e:
    print "Błąd %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)

finally:
    if conn:
        conn.close()

Funkcja connect(…) modułu _mysql tworzy połączenie z serwerem baz danych MySQL. Parametry tego polecenie odpowiadają adresowi serwera baz danych MySQL, nazwie użytkownika, haśle użytkownika oraz nazwie bazy danych. Po nawiązaniu połączenia z serwerem baz danych, program pobiera dane z używanej bazy danych za pomocą odpowiedniej instrukcji języka SQL. Do pobierania danych wykorzystuje się polecenie conn.query(…), którego parametrem jest odpowiednia instrukcja języka SQL. Rezultat wykonania instrukcji języka SQL można uzyskać stosując polecenie conn.use_result(…).

Aplikacja bazodanowa w Python z modułem MySQLdb

Częściej używane podejście do tworzenia aplikacji bazodanowych w języku Python opiera się na module MySQLdb. Podobnie jak w przypadku modułu _mysql, jeśli nie jest on zainstalowany domyślnie, można zainstalować go za pomocą programu pip, instrukcją pip install mysql-python, lub programu conda, instrukcją conda install mysql-python, w zależności od używanej wersji języka Python.

Kod przykładowego programu w języku Python wykorzystującego moduł MySQLdb do komunikacji z serwerem baz danych MySQL znajduje się poniżej.

import MySQLdb
import sys

try:
    conn = MySQLdb.connect('localhost', 'programista', 'iProgramujesz.pl', 'programista')

    curs = conn.cursor()
    curs.execute("SELECT * FROM programista")
    rows = curs.fetchall()

    for i in xrange(len(rows)):
        print "Imię: %s \t Nazwisko: %s" % (rows[i][1], rows[i][2])
    
except mdb.Error, e:
  
    print "Error %d: %s" % (e.args[0],e.args[1])
    sys.exit(1)
    
finally:    
        
    if conn:    
        conn.close()

Podobnie jak w module _mysql, funkcja connect(…) modułu MySQLdb nawiązuje połączenie z serwerem baz danych MySQL. Kolejne parametry tego polecenie to: adres serwera baz danych MySQL, nazwa i hasło użytkownika oraz nazwa bazy danych. Po utworzeniu połączenia z serwerem baz danych, program pobiera dane z używanej bazy danych za pomocą odpowiedniej instrukcji języka SQL. Pobieranie danych wykonuje się poleceniem Cursor.execute(…), którego parametrem jest odpowiednia instrukcja języka SQL. Rezultat wykonania instrukcji języka SQL można uzyskać stosując polecenie Cursor.fetchall(…).

Operacje bazodanowe w języku Python

Wcześniejsze przykłady ilustrowały nawiązywanie połączenia z serwerem baz danych i wykonywanie prostych instrukcji języka SQL pobierających dane z tabeli w bazie danych. Kolejnym krokiem jest wykonanie instrukcji języka SQL zapisujących dane w tabelach bazy danych. W module MySQLdb służy do tego funkcja Cursor.execute(…), której parametrem jest instrukcja języka SQL wprowadzająca zmiany w zawartości bazy danych.

Poniższy kod programu języka Python pokazuje w jaki sposób wstawić informacje o dwóch nowych programistach do tabeli PROGRAMISTA w używanej bazie danych na serwerze baz danych MySQL.

import MySQLdb as mdb

conn = MySQLdb.connect('localhost', 'programista', 'iProgramujesz.pl', 'programista')

with conn:
    curs = conn.cursor()
    curs.execute("INSERT INTO programista(imie, nazwisko) VALUES ('Andrzej', 'Kowalski')")
    curs.execute("INSERT INTO programista(imie, nazwisko) VALUES ('Jan', 'Nowak')")

Uwagi na zakończenie

Przedstawione rozwiązanie – tworzenie aplikacji bazodanowych w języku Python wykorzystujących moduł _mysql lub MySQLdb – jest bardzo podstawowe. W praktyce zazwyczaj wykorzystuje się bardziej zaawansowane rozwiązania, na przykład oparte na frameworkach bazodanowych dla języka Python, które opiszę w kolejnych artykułach.