Python mysql-connector-python: как подключиться к контейнеру докеров из терминала для приложения python с помощью mysql-connector-python

Для моего проекта базы данных университета мы должны создать приложение Python с mysql-connector-python и докером.

Мы сделали docker-compose для MySQL, который хорошо работал с приложением. Из-за непонимания приложение Python было перемещено из контейнера в локальный терминал. С этого момента приложение Python больше не подключалось к контейнеру SQL.

докер-compose.yml

version: "3.9"
services:
  mysql:
    restart: always
    container_name: "mysql"
    image: mysql:latest
    ports:
      - 3306:3306
    expose:
      - 3306
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mysql
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password

Скрипт main.py на питоне:

# pip install -r requirements.txt
# # in requerements.txt
# # line1: mysql-connector-python
# # line2: 
import mysql.connector as mysql

def main():
    cnx = mysql.connect(
        user='user', 
        password='password', 
        database='mysql',
        host='127.0.0.1', 
        port=3306
    )
    cursor = cnx.cursor()

    cursor.execute("CREATE TABLE IF NOT EXISTS test(id INTEGER(64) PRIMARY KEY, name VARCHAR(255))")

    cursor.execute("INSERT INTO test VALUES (2, 'bla')")
    cursor.execute("INSERT INTO test VALUES (3, 'blabla')")
    cursor.execute("INSERT INTO test VALUES (4, 'blablabla')")

    cursor.execute("SELECT * FROM test")
    for row in cursor.fetchall():
        print(row)
    
    cursor.close()
    cnx.close()

if __name__ == "__main__":
    main()

Сначала я запускаю контейнер докеров с помощью следующей команды:

$ docker-compose down
$ docker-compose build
$ docker-compose up

Я жду, пока контейнер запустится, и запускаю приложение python с помощью:

$ python main.py

В другом терминале.

Ошибка, которая добавляется, следующая: _mysql_connector.MySQLInterfaceError: Неизвестный хост сервера MySQL «mysql» (11001)

Исключением является обработка, но никогда не конец процесса.

Личная проблема:

Питон: 3.11.1

Окна: 11

Докер: 20.10.17


Чтобы исправить эту ошибку хост-сервера, я ищу следующую документацию:

И проверьте тег mysql-connector-python на Stack Overflow.

Кто-нибудь может помочь мне найти то, что я пропустил?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я удалил атрибут «выставить» в докере, чтобы исправить это.

После обновления:

version: "3.9"
services:
  mysql:
    restart: always
    container_name: "mysql"
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mysql
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password

Другие вопросы по теме