Dies ist ** 2nd **, ein Memorandum zur Erstellung einer Shogi Score Management App mit Django.
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
[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',
}
}
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!
Ich stelle mir Model als Tabellenentwurfsdokument / -vorlage vor. Erstellen Sie diesmal die folgende Tabelle.
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 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
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!
[Django Standardeinstellungen für die Administrationssite] 4
Recommended Posts