Django mit mariadb

21. Mai 2021 0 Von glanzel

Um danjo mit mariadb/mysql zu betreiben kann wie folgt vorgegangen werden:

in setting/local.py (oder einer anderen Settingsdatei) kann folgendes eingefügt werden:

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql',
         'OPTIONS': {
             'read_default_file': '/PATH/TO/settings/django_my.cnf',
         },
     }
 }

in der datei django_my.cnf sollte dann ungefähr folgendes stehen:

database = a_database
 user = a_user
 password = a_password
 default-character-set = utf8

Damit das ganze funktioniert muss nun noch eine django plugin für die Datenbank installiert werden. mysqlclient geht zwar am einfachsten, lässt sich aber nicht so einfach verschieben da hier Funktionen des Betriebsystems benutzt werden und entsprechende Rechte notwendig sind . Daher würde ich PyMySQL empfehlen. Dies lässt sich dann auch einfach auf einem webspace nutzen:

python3 -m pip install PyMySQL

damit das von mir genutzte mysql backend PyMySQL auch findet muss es (anders als mysqlclient) noch bekanntgemacht werden. Dies passiert etwa in der ../APPNAME/_init__.py mit:

import pymysql
pymysql.install_as_MySQLdb()

Nun muss noch die Migration durchgeführt werden. Falls ihr von einer anderen Datenbank migriert (Ich gehe immer so vor das ich zuerst mit sqlite arbeite und erst zu einem späteren schritt zu mysql wechsel) sollte ihr wie folgt vorgehen:

Alle Datein unter APP1/migrations APP2/migrations etc löschen oder irgendwohin kopieren.

find . -path "*/migrations/*.py" -not -name "__init__.py" -not -path "./env/*"
mv ./APP1/migrations/* ./home/APP1/sqlite/

dann eine neue migrations dateien erstellen und migrieren:

python manage.py makemigrations APP1
python manage.py makemigrations APP2
...
python manage.py migrate

Es ist von belang makemigrations pro APP auszuführen .

nun nochmal einen benutzer anlegen:
python3 manage.py createsuperuser