Доступ к базе данных mysql в контейнере docker из контейнера flask с использованием pymysql

#python #mysql #sql #docker #pymysql

Вопрос:

Привет, ребята, я понимаю, что на эту тему много тем, однако я не смог найти ничего, что работает, и я полностью застрял.

мой файл Docker-Compose выглядит так :

 version: "3.8"
services:
  app:
    build: .
    ports:
      - 9090:5000
    links:
      - db:database

  db:
    platform: linux/x86_64
    image:  mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: main
      MYSQL_USER: root
      MYSQL_PASSWORD: pass
      MYSQL_ROOT_PASSWORD: pass
    ports: 
      - 3306:3306
 

и я пытаюсь подключиться с помощью

 def database_controller(cmd):
    connection=db.connect(host="database", port=3306, user="root", password="pass", database="main")
    with connection:
        with connection.cursor() as cursor: 
            cursor.execute(cmd)
            result = cursor.fetchall()

            connection.commit()
            connection.close()
            return result
 

Это приводит к ошибке:

введите описание изображения здесь

Комментарии:

1. Вы уверены, что у вас есть база данных под названием «главная»?

2. @user7065687 Вы знаете, чего я не думаю, я делаю, я думал, что строка MYSQL_DATABASE: main автоматически создает базу данных под названием main

3. Нет, это не так. Сначала вам нужно создать его самостоятельно.

4. MYSQL_DATABASE следует создать базу данных с таким именем, если это первый запуск контейнера базы данных (см. Раздел «Переменные среды» на mysql странице изображения концентратора Docker . Однако на данный момент вам не нужна устаревшая links: опция, и сообщение об ошибке было бы гораздо более читабельным, если бы оно было в виде текста, а не изображения.