pymysql je pythoní modul pro práci s SQL databází MySQL (ryze pythoní alternativa k MySQLdb)
Konektory k MySQL
editovatPro 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:
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.
Info
editovat- Homepage: github.com/PyMySQL
Externí odkazy
editovat- ZetCode: MySQL Python tutorial – moduly _mysql a MySQLdb – uvažuje se python 2.x
Instalace
editovatMySQLdb
editovatInstalace 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
editovatNaproti tomu instalace pymysql se většinou obejde bez potíží:
sudo pip3 install pymysql
Obě alternativy
editovatPokud 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
editovatVytvoření databáze
editovatDatabá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);