Łączenie się z bazą danych MySQL w Pythonie

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 12061 razy

Instalacja PyMySQL na Windowsie

W wierszu polecenia cmd należy wpisać:

pip install pymysql

W wyniku czego powinna zainstalować się biblioteka PuMySQL.

Collecting pyMysql
  Downloading PyMySQL-0.7.9-py3-none-any.whl (78kB)
    100% |################################| 81kB 276kB/s
Installing collected packages: pyMysql
Successfully installed pyMysql-0.7.9

Wykorzystanie powyższej biblioteki do nawiązania połączenia z bazą danych:

import pymysql as mysql # ładowanie biblioteki mysql.Connect(host='127.0.0.1', unix_socket='', user='root', passwd=password, db='mysql') # łączenie się z bazą danych cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych cur.execute("USE database_name") # wybranie istniejącej bazy danych cur.execute("SHOW TABLES") # zapytanie o tabele zawarte w wybranej wcześniej bazie danych for record in cur: print(record[0]) # wyświetlanie rekordów (w tym przypadku to są nazwy tabelek) cur.close()

Instalacja mysqlclient wraz z modułem MySQLdb na Linux-sie

Można oczywiście na Linux-sie zainstalować bibliotekę PyMySQL, ale ponieważ udało mi się zainstalować mysqlclient z modułem MySQLdb to poniżej pokazuję sposób instalacji, który u mnie zadziałał na Ubuntu 16.04 Lts. Najpierw musiałem zainstalować paczkę libmysqlclient-dev w następujący sposób:

sudo apt-get install libmysqlclient-dev

Przebieg instalacji:

Czytanie list pakietów... Gotowe
Budowanie drzewa zależności       
Odczyt informacji o stanie... Gotowe
Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej wymagane:
  linux-headers-4.4.0-43 linux-headers-4.4.0-43-generic
  linux-image-4.4.0-43-generic linux-image-extra-4.4.0-43-generic
Aby je usunąć należy użyć "sudo apt autoremove".
The following additional packages will be installed:
  libmysqlclient20 zlib1g-dev
Zostaną zainstalowane następujące NOWE pakiety:
  libmysqlclient-dev libmysqlclient20 zlib1g-dev
0 aktualizowanych, 3 nowo instalowanych, 0 usuwanych i 4 nieaktualizowanych.
Konieczne pobranie 2136 kB archiwów.
Po tej operacji zostanie dodatkowo użyte 11,8 MB miejsca na dysku.
Kontynuować? [T/n] t
Pobieranie:1 http://pl.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmysqlclient20 amd64 5.7.16-0ubuntu0.16.04.1 [809 kB]
Pobieranie:2 http://pl.archive.ubuntu.com/ubuntu xenial/main amd64 zlib1g-dev amd64 1:1.2.8.dfsg-2ubuntu4 [168 kB]
Pobieranie:3 http://pl.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmysqlclient-dev amd64 5.7.16-0ubuntu0.16.04.1 [1159 kB]
Pobrano 2136 kB w 2s (959 kB/s)              
Wybieranie wcześniej niewybranego pakietu libmysqlclient20:amd64.
(Odczytywanie bazy danych ... 365779 plików i katalogów obecnie zainstalowanych.)
Przygotowywanie do rozpakowania pakietu .../libmysqlclient20_5.7.16-0ubuntu0.16.04.1_amd64.deb ...
Rozpakowywanie pakietu libmysqlclient20:amd64 (5.7.16-0ubuntu0.16.04.1) ...
Wybieranie wcześniej niewybranego pakietu zlib1g-dev:amd64.
Przygotowywanie do rozpakowania pakietu .../zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb ...
Rozpakowywanie pakietu zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4) ...
Wybieranie wcześniej niewybranego pakietu libmysqlclient-dev.
Przygotowywanie do rozpakowania pakietu .../libmysqlclient-dev_5.7.16-0ubuntu0.16.04.1_amd64.deb ...
Rozpakowywanie pakietu libmysqlclient-dev (5.7.16-0ubuntu0.16.04.1) ...
Przetwarzanie wyzwalaczy pakietu libc-bin (2.23-0ubuntu4)...
Przetwarzanie wyzwalaczy pakietu man-db (2.7.5-1)...
Konfigurowanie pakietu libmysqlclient20:amd64 (5.7.16-0ubuntu0.16.04.1) ...
Konfigurowanie pakietu zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4) ...
Konfigurowanie pakietu libmysqlclient-dev (5.7.16-0ubuntu0.16.04.1) ...
Przetwarzanie wyzwalaczy pakietu libc-bin (2.23-0ubuntu4)...

Pozostało już tylko zainstalowanie modułu mysqlclient:

Collecting mysqlclient

Przebieg instalacji:

Collecting mysqlclient
  Using cached mysqlclient-1.3.9.tar.gz
Building wheels for collected packages: mysqlclient
  Running setup.py bdist_wheel for mysqlclient ... done
  Stored in directory: /home/me/.cache/pip/wheels/97/65/8b/64875621ce64dc57bb8bf6d40931392b1e54497d8e952ecc37
Successfully built mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.9

Przykładowy kod, który w zasadzie różni się tylko nazwą biblioteki ładowanej na początku

import MySQLdb as mysql # ładowanie biblioteki mysql.Connect(host='127.0.0.1', unix_socket='', user='root', passwd=password, db='mysql') # łączenie się z bazą danych cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych cur.execute("USE database_name") # wybranie istniejącej bazy danych cur.execute("SHOW TABLES") # zapytanie o tabele zawarte w wybranej wcześniej bazie danych for record in cur: print(record[0]) # wyświetlanie rekordów (w tym przypadku to są nazwy tabelek) cur.close()
Propozycje książek