Для моего проекта базы данных университета мы должны создать приложение 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.
Кто-нибудь может помочь мне найти то, что я пропустил?
Я удалил атрибут «выставить» в докере, чтобы исправить это.
После обновления:
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