Tec*_*hie 5 python mysql sqlalchemy docker docker-compose
我正在使用 sqlalchemy 和 mysql,该过程对于本地安装的 mysql 运行良好,但我无法将其与 mysql docker 映像连接。我使用 pymysql 作为驱动程序。这是我运行的命令行,我收到如下所示的错误。
以下是 /docker-compose.yml 和 python 文件的部分。我还有一个脚本,可以在 docker mysql 中创建一个名为“sqlalchemy”的数据库,下面未显示。
/docker-compose.yml
services:
db:
build: ./database
restart: always
ports:
- "3309:3306"
environment:
- MYSQL_USER=root
- MYSQL_ROOT_PASSWORD=password
- MYSQL_HOST=db
Run Code Online (Sandbox Code Playgroud)
/sqlalchemy.py
msqldb_uri = 'mysql+pymysql://root:password@db:3309/sqlalchemy'
engine = create_engine(msqldb_uri)
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'db' ([Errno 111] Connection refused)")
Run Code Online (Sandbox Code Playgroud)
如果脚本在容器内运行,则您不会在连接中使用发布端口,但应3306
在本地主机或同一网络中使用。发布端口用于外部世界。
msqldb_uri = 'mysql+pymysql://root:password@localhost:3306/sqlalchemy'
engine = create_engine(msqldb_uri)
Run Code Online (Sandbox Code Playgroud)
如果脚本在同一 docker-compose 文件中的其他容器中运行,那么您也不需要发布端口。
msqldb_uri = 'mysql+pymysql://root:password@db:3306/sqlalchemy'
engine = create_engine(msqldb_uri)
Run Code Online (Sandbox Code Playgroud)
如果在主机和数据库上运行的脚本在容器内运行,那么您需要连接发布端口,但不应使用容器名称作为 IP。
msqldb_uri = 'mysql+pymysql://root:password@localhost:3309/sqlalchemy'
engine = create_engine(msqldb_uri)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5841 次 |
最近记录: |