[PYTHON] Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 4] eine nervenschwächende Anwendung machen ~ MySQL-Konstruktion und DB-Migration mit Docker ~

<< Teil 3 | Teil 5 >>

Erstellen Sie mit Docker einen MySQL-Container

Erstellen Sie einen Docker-Ordner direkt unter dem Projekt und erstellen Sie einen Ordner db_data (möglicherweise mit einem anderen Namen) und eine Docker-compose.yml direkt darunter.

concentratio #Projektstammverzeichnis
├── config 
│   └── ...
│   
├── docker 
│   ├── db_data #Für die Datenpersistenz
│   └── docker-compose.yml
└── ...

docker/docker-compose.yml


version: '2'
services:
  db:
    image: mariadb:latest
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    environment:
      - MYSQL_ROOT_USER=root
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=concentratio
      - MYSQL_USER=user
      - MYSQL_PASSWORD=user
    volumes:
      - db_data:/var/lib/mysql # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
      - ./db_data:/docker-entrypoint-initdb.d # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
      - ./db_data:/etc/mysql/conf.d # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
    ports:
      - '3333:3306'

volumes:
  db_data:
    driver: local

Da der Ordner db_data in /docker-entrypoint-initdb.d gemountet ist, wird der Container beim ersten Start in den Ordner db_data eingefügt (beim ersten Mal?). Die SQL-Datei wird ausgeführt. </ font>

Docker-Container starten

Verwenden Sie den Befehl cd, um in das Verzeichnis "docker" zu wechseln, und verwenden Sie dann "docker-compose up -d", um den MySQL-Container zu starten.

docker$ docker-compose up -d
Creating docker_db_1 ... done

Apropos Stop ist "Docker-Compose Stop" (oder "Docker Stop Container ID oder Containername") Löschen ist docker-copose down -v (oder docker rm container ID oder container name)

Überprüfen Sie, ob der MySQL-Container ausgeführt wird

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
03dd318a2ad7        mariadb:latest      "docker-entrypoint.s…"   29 seconds ago      Up 29 seconds       0.0.0.0:3333->3306/tcp   docker_db_1

Versuchen Sie, eine Verbindung mit der MySQL-Workbench herzustellen

image.png

image.png Es sieht so aus, als könnte ich mich verbinden

DB-Migration

Installieren Sie mysqlclient und django-environ mit pip

pip3 install django-environ mysqlclient

Erstellen Sie eine .env-Datei

concentratio #Projektstammverzeichnis
├── config 
│   └── ...
│   
├── docker 
│   └── ...
│
├──.env
│
└── ...

.env.default


DEBUG=True
DATABASE_URL=mysql://user:[email protected]:3333/concentratio

Bearbeiten Sie settings.py

config/settings.py


.
..
...
import environ #hinzufügen(django-Umgebung importieren)
.
..
...
#hinzufügen
ENV_FILE = os.path.join(BASE_DIR, '.env') # .env Dateipfad
ENV = environ.Env()
ENV.read_env(ENV_FILE) # django-in der Umwelt.Lesen Sie die env-Datei
...
..
.
#hinzufügen
DATABASES = {
    'default': ENV.db()
}
DATABASES['default']['ATOMIC_REQUESTS'] = True # ATOMIC_Wenn REQUESTS auf True gesetzt ist, wird die gesamte Ansicht zu einer Transaktion (wenn während der Ansichtsverarbeitung eine Ausnahme auftritt, wird die vorherige DB-Operation zurückgesetzt).
...
..
.

DB-Migration

python3 manage.py makemigrations
python3 manage.py migrate

Der Migrationsbefehl ist in Ordnung, solange verschiedene OKs angegeben werden.

$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

Wenden Sie sich erneut an die MySQL-Workbench

Die Management-Tabelle von Django wurde erstellt. Die DB-Migration ist abgeschlossen. image.png

Erstellen Sie einen Superuser

Sie können einen Superuser mit "python3 manage.py createduperuser" erstellen.

$ python3 manage.py createsuperuser
Username : admin #Richtig einstellen (diesmal Admin)
Email address: [email protected] #Stellen Sie dies entsprechend ein (diesmal admin)@admin.co.jp)
Password: #Richtig einstellen (diesmal Admin)
Password (again): #Richtig einstellen (diesmal Admin)
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y #Ich erhalte eine Warnung, dass das Passwort einfach ist, aber es spielt keine Rolle, ob es "y" ist.
Superuser created successfully.

image.png

Der Benutzer wurde erstellt. das ist alles.

<< Teil 3

Recommended Posts

Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 4] eine nervenschwächende Anwendung machen ~ MySQL-Konstruktion und DB-Migration mit Docker ~
Machen wir eine nervenschwächende App mit Vue.js und Django-Rest-Framework [Teil 3] ~ Implementierung von Nervenschwäche ~
Machen wir eine nervenschwächende Anwendung mit Vue.js und Django-Rest-Framework [Teil 6] ~ Benutzerauthentifizierung 2 ~
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 5] ~ Benutzerauthentifizierung ~ eine nervenschwächende Anwendung erstellen
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 2] ~ Vue setup ~ eine nervenschwächende App erstellen
Lassen Sie uns mit Vue.js und Django-Rest-Framework [Teil 1] ~ Django-Setup ~ eine nervenschwächende App erstellen
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Wie man ein Schießspiel mit toio macht (Teil 1)
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
[Einführung in Tensorflow] Verstehen Sie Tensorflow richtig und versuchen Sie, ein Modell zu erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Versuchen Sie, einen Web-Service-ähnlichen Typ mit 3D-Markup-Sprache zu erstellen
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Stellen Sie die Django-Anwendung mit Docker bereit
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]
Versuchen Sie, mit Python (2) eine Erfassungssoftware zu erstellen, die so genau wie möglich ist.
Versuchen Sie, Foldl und Foldr mit Python: Lambda zu machen. Auch Zeitmessung
So machen Sie den Containernamen in Docker als Subdomain zugänglich
Ich möchte eine Webanwendung mit React und Python Flask erstellen