mysql - 如何使用 sql-alchemy 从烧瓶应用程序连接到 mysql docker 容器
问题描述
我有一个烧瓶应用程序。此应用程序在本地运行。我已经拉了 mysql:5.7 并且它正在运行。我想从烧瓶应用程序的 mysql:5.7 容器中创建一个数据库并使用它。我正在使用 sql_alchemy。
我给了uri
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@172.17.0.2:4000/document_generator'
其中 root 和 root 分别是 mysql 用户名和密码。172.17.0.2 是mysql容器的ip地址。我已经使用运行容器
docker run -p 4000:4000 -e MY_SQL_ROOT_PASSWORD=root mysql:5.7
我已经暴露了端口 4000。但是,当我进入容器并尝试
show global variables like 'port';
它给了 3306 作为端口。
我尝试使用 SQL_ALCHEMY_URI 中的两个端口,但它们都无法创建数据库。我还尝试将 mysql:// 更改为 mysql+pymsql://。甚至那个力气。我已经在 models.py 中编写了表创建代码
class Users(db.Model):
__tablename__ = 'users'
username = db.Column(db.String(128), nullable=True)
password = db.Column(db.String(256), nullable=False)
private_id = db.Column(db.String(128), primary_key=True)
我希望在运行烧瓶应用程序时在 mysql 容器中创建数据库。我对docker-compose一无所知。任何帮助都会有很大帮助。提前致谢。
解决方案
发布端口不会改变 MySQL 模式中的 PORT,如果你想使用端口连接 MySQL 容器,你4000
只需要映射.4000
3306
docker run -p 4000:3306 -e MY_SQL_ROOT_PASSWORD=root mysql:5.7
还会建议使用docker 网络而不是容器的 IP,因为 IP 经常更改。
但是如果你想在端口上启动 MySQL,4000
你可以尝试类似的东西
docker run -it -p 4000:4000 -e MY_SQL_ROOT_PASSWORD=root mysql:5.7 --port=4000
然后如果你像这样查询
show global variables like 'port';
你会得到4000
.
推荐阅读
- python-3.x - 如何在 python 中使用 selenium 选择文本并将其添加到电子邮件中?
- php - 使用 FPDF 的段落之间的换行符太高
- r - 如何在 R 中的另一个变量下分支多个变量?
- reactjs - 运行应用程序时未定义“react-redux”中的 useSelector
- office-js - 仅桌面版调试模式下的 OfficeJS 错误
- c++ - 对使用 CMake 生成为 lib .a 的方法的未定义引用
- android - saveInstanceState + restoreInstanceState VS configChanges
- python - 使用 SDK 在 Google Cloud 中设置环境变量时出错
- javascript - 在一个