首页 > 解决方案 > 无法在本地运行的 Flask 应用程序中连接到 Google SQL

问题描述

Python3正在Google App Engine Flexible运行gunicornand Flask。部署我的应用程序会导致连接成功,但是我似乎无法在本地连接,并且考虑到推送新版本的速度/繁琐程度,我真的很希望能够从本地版本开始工作。

这是我运行时的错误:gunicorn main:application

Traceback (most recent call last):
File "/Users/XXXX/Desktop/Flexible/pymysql/connections.py", line 
571, in connect
sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

<stacktrace within pymysql/connection.py>

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, 
"Can't connect to MySQL server on 'localhost' ([Errno 2] No such file 
or directory)") (Background on this error at: 
http://sqlalche.me/e/e3q8)
[2019-02-18 09:40:41 +1100] [93536] [INFO] Worker exiting (pid: 93536)
[2019-02-18 09:40:41 +1100] [93533] [INFO] Shutting down: Master
[2019-02-18 09:40:41 +1100] [93533] [INFO] Reason: Worker failed to boot.

我已经将我的 Google SQL 设置为拥有一个公共 IP,并将它连接到我自己的 IP 地址,但这似乎并没有改变任何东西。

这是我的代码:

engine = create_engine('mysql+pymysql://<USER>:<PASSWORD>@/<DBNAME>?unix_socket=/cloudsql/<INSTANCE_NAME>')
connection = engine.connect()

任何帮助都会非常感谢:)

标签: pythonmysqlgoogle-app-engineflaskgoogle-cloud-platform

解决方案


您包含的回溯使您看起来像是在尝试连接到本地 Unix 套接字。仅当您的数据库与应用程序代码在同一台机器上运行时,这才有效。

相反,您需要通过公共 IP 地址进行连接,或者使用 Cloud SQL 代理(这可能是最简单的方法)。

请参阅:https ://cloud.google.com/python/getting-started/using-cloud-sql


推荐阅读