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