pymysql je pythoní modul pro práci s SQL databází MySQL (ryze pythoní alternativa k MySQLdb)

Konektory k MySQL

editovat

Pro práci s s MySQL databází existují v Pythonu dva velmi podobné konektory, které používají stejnou syntax (proto je probíráme v jednom článku najednou), ale je mezi nimi jeden zásadní rozdíl:

  • MySQLdb – napsaný v jazyce C
  • pymysql – napsaný v Pythonu

Kromě nich existuje mysql.connector od Oracle, který má ale jinou syntax a tak je probírán v samostaném článku Python/modul/mysql.connector.

Externí odkazy

editovat

Instalace

editovat

MySQLdb

editovat

Instalace tohoto modulu může být někdy svízelná:

Ubezpečíme se, že máme nainstalováno:

apt-get install python-dev libmysqlclient-dev

a potom:

sudo pip3 install MySQL-python

Může hodit chybu:

ImportError: No module named 'ConfigParser'

Tak tedy:

sudo pip3 install ConfigParser

...

SyntaxError: invalid syntax

Tak tedy zkusíme nainstalovat rovnou debianovský balík

sudo apt-get install python-mysqldb

pymysql

editovat

Naproti tomu instalace pymysql se většinou obejde bez potíží:

sudo pip3 install pymysql

Obě alternativy

editovat

Pokud chceme, aby náš skript pracoval nezávisle na tom, který z obou modulů je v systému nainstalován, uvedeme do záhlaví skriptu kód:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

Viz What is pymysql and how does it differ from mysqldb? Can it affect Django deployment?

Tutoriál

editovat

Vytvoření databáze

editovat

Databázi pytest si zatím vytvoříme předem pomocí PHPMyAdmin nebo pomocí klienta mysql

CREATE TABLE IF NOT EXISTS `seznam` (
  `id` int(11) NOT NULL,
  `name` varchar(10) COLLATE utf8_czech_ci DEFAULT NULL,
  `number` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

INSERT INTO `seznam` (`id`, `name`, `number`) VALUES
(1, 'Adam', 111),
(2, 'Božena', 222),
(3, 'Cyril', 333),
(4, 'David', 444);