Debian10: Django a remote MySQL databáze

V mém prvním projektu používám jako default database v settings.py lokální SQLite3. V aplikacích chci ale pracovat s remote MySQL databází.

Přidal jsem do settings.py druhou databázi „db“, vyplnil jsem USER, PASSWORD, jako ENGINE jsem zvolil dle dokumentace Multiple databases „django.db.backends.mysql“. Abych mohl pracovat s MySQL, musel jsem přidat clienta.

pip install mysqlclient

OSError: mysql_config not found

Instalace napoprvé neprošla, chyběl mysql_config. Na stackoverflow jsem dodhledal, že mi v systému Debian 10 chybí balíček libmysqlclient-dev. Ten však v repozitáři nebyl, tak jsem prohledal v cache podobné a našel jsem toto:

sudo apt-get install default-libmysqlclient-dev

Po instalaci client už prošla instalace Python balíku mysqlclient, nezapomenout přidat také do requirements.txt.

Pokud spouštím Django projekt přes Apache WSGI, tak mysqlclient nefungoval

Apache hlásil error 500 a v souboru /var/log/apache2/error.log se objevila chybová hláška: NameError: name ‚_mysql‘ is not defined

Místo mysqlclient jsem musel použít pymysql (přepíše systémově moduly MySQLdb a _mysql).

pip install pymysql

Na začátek souboru manage.py v Django projektu.

import pymysql
pymysql.install_as_MySQLdb()