[PYTHON] Erstellen Sie eine Shogi Score Management App mit Django 2 ~ Datenbankeinstellungen ~

Einführung

Dies ist ** 2nd **, ein Memorandum zur Erstellung einer Shogi Score Management App mit Django.

Arbeitsumgebung

Die Arbeitsumgebung ist diesmal wie folgt

Außerdem sieht die Verzeichnisstruktur von Django folgendermaßen aus:

- kifu_app_project/
    - kifu_app_project/
        - __init__.py
        - setting.py
        - urls.py
        - wsgi.py
    - kifu_app/
        - migrations/
        - __init__.py
        - admin.py
        - apps.py
        - models.py
        - tests.py
        - views.py
    - manage.py
    - .gitignore

Inhalt dieses Artikels

Datenbankeinstellungen

Bearbeiten Sie settings.py

[Offizielles Dokument] 1 ist leicht zu verstehen, daher denke ich, dass es am besten ist, dies zu betrachten und zu bearbeiten. Im inneren kifu_app_project befindet sich settings.py. Bearbeiten Sie es also. Standardmäßig wird eine Verbindung zu "sqlite3" hergestellt. Ändern Sie dies, um eine Verbindung zu "mysql" herzustellen.

settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Name der Datenbank',
        'USER': 'Nutzername',
        'PASSWORD': 'Passwort',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Installieren der MySQL-Bibliothek

Geben Sie dann den folgenden Befehl ein, aber ...

$ python manage.py migrate
ModuleNotFound Error : No module named 'MySQLdb'

Ich bekomme den Fehler.

Ich habe dort gesucht und festgestellt, dass die Installation von PyMySQL das Problem lösen würde, also werde ich es versuchen, aber diesmal

$ python manage.py migrate
mysqlclient 1.3.13 or newer is required;

Ich habe den Fehler bekommen.

Und als ich diesen Fehler untersuchte, fand ich den folgenden Blog. [Django: Fehlerbehebung "ImproperlyConfigured auslösen (" mysqlclient 1.3.13 oder neuer ist erforderlich; ~) django.core.exceptions.ImproperlyConfigured: ~ "] 2

Vielen Dank,

Die empfohlene MySQL (MariaDB) -Bibliothek auf der Django-Seite ist mysqlclient anstelle von PyMySQL

Es scheint, dass Installieren Sie daher mysqlclient mit pip.

$ pip install mysqlclient

Und wenn Sie erneut migrieren.

$ python manage.py migrate
Apply all migrations: admin ~

Und es hat funktioniert!

Modell erstellen

Dieser Tischentwurf

Ich stelle mir Model als Tabellenentwurfsdokument / -vorlage vor. Erstellen Sie diesmal die folgende Tabelle.

Bearbeiten Sie models.py

Erstellen Sie zunächst eine Informationstabelle.

models.py


class Information(models.Model):
    date = models.DateTimeField()
    sente = models.CharField(max_length=50)
    gote = models.CharField(max_length=50)
    result = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)])   # `validatos`Validierung mit(0 oder mehr und weniger als 3)
    my_result = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)])
    small_class = models.ForeignKey(SmallClass, on_delete=models.CASCADE)   #Definieren Sie eine Beziehung
    create_at = models.DateTimeField(auto_now_add=True)     #Zeit automatisch hinzufügen
    update_at = models.DateTimeField(auto_now=True)         #Aktualisieren Sie die Uhrzeit automatisch

(Es gibt einige japanische Variablen, aber bitte ignorieren Sie sie)

Für die Felder, die verwendet werden können, habe ich auf die folgende Seite verwiesen. [Zusammenfassung nach Feldliste des Django-Datenbankmodells] 3

Was ich an Django besonders nützlich finde, ist, dass es ziemlich einfach ist, Beziehungen zwischen Tabellen herzustellen. Mit ForeignKey (to, on_delete, ** options) können Sie eine Viele-zu-Eins-Beziehung festlegen (auf welches Modell Sie sich beziehen möchten). Dies erleichtert das Abrufen verwandter Daten, z. B. beim Abrufen von Abfragen zu einem späteren Zeitpunkt.

Definieren Sie in ähnlicher Weise andere Tabellen.

models.py



class LargeClass(models.Model):
    name = models.CharField(max_length=10)

class MiddleClass(models.Model):
    large_class = models.ForeignKey(LargeClass, on_delete=models.CASCADE)
    name = models.CharField(max_length=10)

class SmallClass(models.Model):
    middle_class = models.ForeignKey(MiddleClass, on_delete=models.CASCADE)
    name = models.CharField(max_length=10)

class Information(models.Model):
    #~ Ausgelassen ~

class Kifu(models.Model):
    information = models.ForeignKey(Information, on_delete=models.CASCADE)
    number = models.IntegerField(validators=[MinValueValidator(0)])
    te = models.CharField(max_length=20)

Wenn Sie nicht in dieser Reihenfolge schreiben, tritt aufgrund der Beziehung (Fremdschlüssel) ein Fehler auf.

Führen Sie die Migration aus

Führen Sie nach dem Bearbeiten von models.py den folgenden Befehl aus, um die Migration tatsächlich durchzuführen. Bei der Migration werden SQL-Anweisungen ausgeführt, Tabellen usw. basierend auf dem Modell erstellt.

$ python manage.py makemigrations <App Name>
Migrations for '~'
  ~\migrations\0001_initial.py
    - Create model ~
      ...~ Ausgelassen ~

Beachten Sie, dass dies der App-Name ist, nicht der Projektname. Hoffentlich sehen Sie die Anweisung "Modell erstellen". Ich denke auch, dass eine Datei mit dem Namen 0001_initial.py unter "kifu_app_project \ kifu_app \ migrations" erstellt wird. Diese Datei definiert Tabellen und Spalten basierend auf dem von Ihnen erstellten Modell.

Führen Sie die Migration erneut aus

Lassen Sie uns die Migration basierend auf der zuvor erstellten Migrationsdatei durchführen und tatsächlich eine Tabelle erstellen.

$ python manage.py migrate
Applying kifu_app.0001_initial... OK

Wenn Sie "OK" sagen, sind Sie erfolgreich!

Danach melden wir uns tatsächlich bei MySQL an und prüfen, ob die Tabelle erstellt wurde!

Vorschau beim nächsten Mal

[Django Standardeinstellungen für die Administrationssite] 4

Recommended Posts

Erstellen Sie eine Shogi Score Management App mit Django 2 ~ Datenbankeinstellungen ~
Erstellen Sie eine Shogi-Score-Management-App mit Django 3 ~ Django Standard-Management-Site-Einstellungen ~
Erstellen Sie eine Shogi Score Management App mit Django 4 ~ Create View ~
Erstellen Sie eine Shogi Score Management App mit Django 6 ~ Split Template ~
Erstellen einer Shogi-Score-Management-Anwendung mit Django 1-Environment building-
Erstellen Sie eine Shogi-Score-Management-Anwendung mit Django 5 ~ DB-Daten an Vorlage übergeben ~
Erstellen und Bereitstellen von Django-Apps (PTVS) mithilfe des Azure Table-Speichers
Erstellen Sie mit PyLearn2 eine App zur falschen Unterstützung
Bis Sie eine neue App in Django erstellen
Versuchen Sie, mit WebSocket mit Django (Swamp Dragon) eine Todo-Verwaltungssite zu erstellen.
Erstellen Sie einen Django-Zeitplan
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Für mich als Django-Anfänger (1) -Erstellen eines Projekts / einer App-
Für mich als Django-Anfänger (4) - Erstellen Sie eine Memo-App-
Todo-App mit Django erstellen ⑤ Funktion zum Bearbeiten von Aufgaben erstellen
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Entwurf des Datenbankmodells)
Ich werde ein Spiel machen, um das Ablegen von Rätseln und Drachen mithilfe von Pygame zu kontrollieren
[Lernrekord] Erstelle mit Pyhtons Tkinter ein mysteriöses Dungeon-Spiel
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie eine einfache CRUD-App mit der generischen Klassenansicht von Django
Erstellen Sie eine Homepage mit Django
DEBUG-Einstellungen bei Verwendung von Django
Erstellen Sie einen Django-Anmeldebildschirm
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Schritte zum Erstellen eines Django-Projekts
Erstellen Sie ein verschachteltes Wörterbuch mit defaultdict
Implementieren Sie die Django-App auf Hy
Erstellen Sie die CRUD-API mit der Fast API
Erstellen Sie mit Boost.Python einen C-Sprach-Wrapper
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie mit Django einen LINE-Bot
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Einführung)
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Todo-App mit Django erstellen ④ Ordner- und Aufgabenerstellungsfunktion implementieren