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);