SQLAlchemy AppEngine标准 - 与MySQL服务器

时间:2018-03-14 12:27:06

标签: mysql python-2.7 google-app-engine sqlalchemy google-cloud-sql

我尝试使用AppEngine标准(Python 2.7)连接到Python Cloud SQL第二代Python。 到现在为止,我直接使用MySQLDB驱动程序,它很好。

我试图切换到SQLAlchemy,但现在我在部署代码时总是遇到此错误(它似乎在本地工作正常)导致错误500(It' s不只是一些丢失的连接,它总是失败):

OperationalError: (_mysql_exceptions.OperationalError) (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38") (Background on this error at: http://sqlalche.me/e/e3q8)

我不明白,因为设置与以前没有什么不同,所以它必须与我使用SQLAlchemy的方式有关。

我使用这样的东西:

create_engine("mysql+mysqldb://appuser:password@x.x.x.x/db_name?unix_socket=/cloudsql/gcpProject:europe-west1:instanceName")

我尝试过不同的价值观(有没有ip,......)。但它仍然是一样的。是版本兼容性问题吗?

我用 app.yaml和SQLAlchemy 1.2.4中的MySQL-python:

app.yaml:

 - name: MySQLdb
   version: "latest"

requirements.txt:

SQLAlchemy==1.2.4

2 个答案:

答案 0 :(得分:1)

这是网址中的一个问题。我在连接字符串的末尾添加了代码“/ dbname”的特定部分,结果是这样的:

的MySQL + MySQLdb的:// APPUSER:密码@ / DB_NAME unix_socket = / CLOUDSQL / gcpProject:欧洲-west1:实例/ DBNAME

所以最后,这个错误的含义也可能是unix套接字错误。

答案 1 :(得分:0)

Google CloudSQL服务器连接丢失的原因有很多,但非常正确,您必须先确保设置合适。我不认为这个问题与版本兼容性有关。

根据documentation,您的应用程序在部署应用程序时能够连接到您的Cloud SQL实例,您需要从Cloud SQL添加用户,密码,数据库和实例连接名称变量到app.yaml文件中的相关环境变量(您显示的app.yaml似乎不包含这些环境变量)。

我建议您查看link中的详细信息,以获取有关如何设置CloudSQL实例和连接到实例的详细信息。