Python/modul/pymysql
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:
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
[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);