[PYTHON] Créez une application de gestion de score shogi à l'aide de Django 2 ~ Paramètres de la base de données ~

introduction

Ceci est ** 2nd **, un mémorandum de création d'une application de gestion de score shogi à l'aide de Django.

Environnement de travail

L'environnement de travail cette fois-ci est le suivant

De plus, la structure de répertoires de Django ressemble à ceci:

- 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

Contenu de cet article

--Paramètres de la base de données

Paramètres de la base de données

Modifier les paramètres.py

[Document officiel] 1 est facile à comprendre, donc je pense qu'il vaut mieux regarder ceci et le modifier. Il y a settings.py dans le kifu_app_project interne, alors modifiez-le. Par défaut, il se connecte à sqlite3, alors changez-le pour vous connecter à mysql.

settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Nom de la base de données',
        'USER': 'Nom d'utilisateur',
        'PASSWORD': 'mot de passe',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Installer la bibliothèque MySQL

Entrez ensuite la commande suivante, mais ...

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

J'obtiens l'erreur.

J'ai cherché là-bas et j'ai trouvé que l'installation de PyMySQL résoudrait le problème, alors je vais l'essayer, mais cette fois

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

J'ai eu l'erreur.

Et quand j'ai examiné cette erreur, j'ai trouvé le blog suivant. [Django: Résolution d’erreurs «lever incorrectementConfiguré (‘ mysqlclient 1.3.13 ou plus récent est requis; ~) django.core.exceptions.ImproperlyConfigured: ~ ”] 2

Merci,

La bibliothèque MySQL (MariaDB) recommandée côté Django est mysqlclient au lieu de PyMySQL

Il paraît que Par conséquent, installez mysqlclient avec pip.

$ pip install mysqlclient

Et lorsque vous exécutez à nouveau, migrez.

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

Et ça a marché!

Créer un modèle

Cette conception de table

Je considère Model comme un document / modèle de conception de table. Cette fois, créez le tableau suivant.

--Tableau d'information

Modifier models.py

Commencez par créer une table d'informations.

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`Validation avec(0 ou plus et moins de 3)
    my_result = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(3)])
    small_class = models.ForeignKey(SmallClass, on_delete=models.CASCADE)   #Définir une relation
    create_at = models.DateTimeField(auto_now_add=True)     #Ajouter automatiquement du temps
    update_at = models.DateTimeField(auto_now=True)         #Mettre à jour automatiquement l'heure

(Il existe des variables japonaises, mais veuillez les ignorer)

Pour les champs qui peuvent être utilisés, je me suis référé à la page suivante. [Liste récapitulative par champ du modèle de base de données Django] 3

Ce que je trouve particulièrement utile avec Django, c'est qu'il est assez facile de créer des relations entre les tables. Avec ForeignKey (to, on_delete, ** options), vous pouvez définir une relation plusieurs-à-un (à quel modèle se rapporter). Cela facilite la récupération des données associées, par exemple lors de la récupération de requêtes à une date ultérieure.

De même, définissez d'autres tables.

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):
    #~ Omis ~

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

En raison de la relation (clé étrangère), si vous n'écrivez pas dans cet ordre, une erreur se produira.

Lancer la migration

Après avoir modifié models.py, exécutez la commande suivante pour effectuer réellement la migration. La migration consiste à exécuter des instructions SQL, à créer des tables, etc. en fonction du modèle.

$ python manage.py makemigrations <nom de l'application>
Migrations for '~'
  ~\migrations\0001_initial.py
    - Create model ~
      ...~ Omis ~

Notez qu'il s'agit du nom de l'application, pas du nom du projet. J'espère que vous verrez l'instruction «Créer un modèle ». Aussi, je pense qu'un fichier appelé 0001_initial.py est créé sous kifu_app_project \ kifu_app \ migrations. Ce fichier définit les tables et les colonnes en fonction du modèle que vous avez créé.

Exécutez à nouveau migrer

Effectuons une migration basée sur le fichier de migration créé précédemment et créons en fait une table.

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

Si vous dites "OK", vous réussissez!

Après cela, connectons-nous à mysql et vérifions si la table est créée!

Aperçu de la prochaine fois

[Paramètres du site d'administration par défaut de Django] 4

Recommended Posts

Créez une application de gestion de score shogi à l'aide de Django 2 ~ Paramètres de la base de données ~
Créez une application de gestion de score shogi à l'aide de Django 3 ~ Paramètres du site de gestion par défaut de Django ~
Créez une application de gestion de partition shogi à l'aide de Django 4 ~ Créer une vue ~
Créez une application de gestion de partition shogi à l'aide de Django 6 ~ Split Template ~
Création d'une application de gestion de score shogi à l'aide de Django 1-Construction de l'environnement-
Créer une application de gestion de partition shogi à l'aide de Django 5 ~ Passer les données de la base de données au modèle ~
Création et déploiement d'applications Django (PTVS) à l'aide du stockage Azure Table
Créer une application d'assistance technique à l'aide de PyLearn2
Jusqu'à ce que vous créiez une nouvelle application dans Django
Essayez de créer un site de gestion Todo en utilisant WebSocket avec Django (Swamp Dragon)
Créer un planning Django
Créer une application Todo avec Django REST Framework + Angular
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Essayez de créer une application Todo avec le framework Django REST
Créer une application Todo avec Django ③ Créer une page de liste de tâches
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
À moi-même en tant que débutant Django (1) -Création d'un projet / application-
À moi-même en tant que débutant Django (4) --Créer une application mémo-
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Conception du modèle de base de données)
Je vais créer un jeu pour contrôler le puzzle et les dragons en utilisant pygame
[Fiche d'apprentissage] Créez un mystérieux jeu de donjon avec Pyhton's Tkinter
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créez une application CRUD simple en utilisant la vue de classe générique de Django
Créer une page d'accueil avec django
Paramètres de DEBUG lors de l'utilisation de Django
Créer un écran de connexion Django
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Étapes pour créer un projet Django
Créer un dictionnaire imbriqué à l'aide de defaultdict
Implémenter l'application Django sur Hy
Créer une API CRUD à l'aide de l'API rapide
Créez un wrapper de langage C à l'aide de Boost.Python
Créer un téléchargeur de fichiers avec Django
Créer un bot LINE avec Django
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Introduction)
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Créer une application Todo avec Django ④ Implémenter la fonction de création de dossier et de tâche