无法在本地运行的Flask应用中连接到Google SQL

时间:2019-02-17 23:21:42

标签: python mysql google-app-engine flask sqlalchemy

我在Python3Google App Engine Flexiblegunicorn中运行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()

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

由于您的数据库托管在Cloud SQL上,因此在本地计算机上运行应用程序时,设置Cloud SQL代理是一种访问数据库的简便方法。

此链接为您提供了有关Cloud SQL的一些详细信息,并在开始时提供了有关代理的特定信息:https://cloud.google.com/python/getting-started/using-cloud-sql

以下是用于本地测试的设置和安装的有用快速入门: https://cloud.google.com/sql/docs/mysql/quickstart-proxy-test

请确保您的代理正在运行并在本地进行整个测试时一直在监听,否则您将收到“连接被拒绝”错误。

希望这会有所帮助,让我知道是否全部成功!

欢呼

相关问题