Python mysql-connector-python:如何使用mysql-connector-python从终端连接到docker容器

gk7wooem  于 2023-04-10  发布在  Mysql
关注(0)|答案(1)|浏览(147)

对于我的大学数据库项目,我们必须使用mysql-connector-python和docker创建一个python应用程序。
我们为MySQL做了一个docker-compose,它在应用程序中运行良好。由于缺乏理解,Python应用程序从容器移动到本地终端。从那时起,Python应用程序不再连接到SQL容器。
docker-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

pythonmain.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容器:

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

我等待容器启动,并启动python应用程序:

$ python main.py

在另一个终端。
追加的错误如下:_mysql_connector.MySQLInterfaceError: Unknown MySQL server host 'mysql' (11001)
异常正在处理,但永远不会结束处理。
个人问题:
简体中文(zh_cn)
窗口:11个
Docker:20.10.17
为了修复主机服务器错误,我在以下文档中搜索:

检查Stack Overflow上的标签mysql-connector-python。
有人能帮我找到我错过了什么吗?

h22fl7wq

h22fl7wq1#

我删除了docker compose中的'expose'属性来修复它
更新后:

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

相关问题