【发布时间】:2021-11-08 13:41:43
【问题描述】:
我正在尝试将 python 与 MYSQL 连接,两者都在不同的 docker 中。我可以从我的 ubuntu 终端访问 MYSQL,但是当我尝试使用我在 python 中使用的 url 访问时它不起作用。
Docker 编写
version: "3.9" # optional since v1.27.0
services:
mysql:
image: 'mysql:latest'
restart: always
volumes:
- './my-vol/mysql_data:/var/lib/mysql'
ports:
- '3306:3306'
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/my-vol
Python 文件
from flask import Flask
app = Flask(__name__)
import sqlalchemy as db
import mysql.connector
from mysql.connector import Error
@app.route('/db')
def python():
connection = mysql.connector.connect(host="mysql", user="root", password="root", database="test")
cursor = connection.cursor()
with connection.cursor() as cursor:
cursor.execute("Select * from test_table")
for(userId , firstName , lastName ) in cursor:
return print("{}, {}, {}".format(userId, firstName, lastName))
最后,这是我尝试访问 /db url 时出现的完成错误。
[2021-09-13 08:34:19,119] ERROR in app: Exception on /db [GET]
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2070, in wsgi_app
web_1 | response = self.full_dispatch_request()
web_1 | File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in full_dispatch_request
web_1 | return self.finalize_request(rv)
web_1 | File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1535, in finalize_request
web_1 | response = self.make_response(rv)
web_1 | File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1698, in make_response
web_1 | raise TypeError(
web_1 | TypeError: The view function for 'python' did not return a valid response. The function either returned None or ended without a return statement.
web_1 | 172.24.0.1 - - [13/Sep/2021 08:34:19] "GET /db HTTP/1.1" 500 -
【问题讨论】:
-
是的,
print(something)总是返回None。 -
此外,如果表为空,则执行只会“退出”视图函数的末尾,该函数也返回
None。 -
能否检查
mysql.connector.connect()中的host参数是否与运行mysql数据库的容器的主机名相同。另一件需要注意的事情是,两个容器应该在同一个网络上,它们应该在同一个网络上,因为你已经使用 compose 创建了它们。仍然作为调试过程,您应该能够使用docker container inspect <container_name>进行验证
标签: python mysql-python mysql-connector