使用Python和SQLalchemy连接Google Cloud功能的Cloud SQL



我读取了与GCF中云SQL中托管的MySQL有关的所有文档,但仍然无法连接。此外,在与此相关的SQLalchemy文档中尝试了所有提示。我正在使用以下连接

con = 'mysql+pymysql://USER:PASSWORD@/MY_DB?unix_socket=/cloudsql/Proj_ID:Zone:MySQL_Instance_ID'
mysqlEngine = sqlalchemy.create_engine(con)

我遇到的错误是:

(pymysql.err.er.operationalerror)(2003年,"无法在'localhost'上连接到mysql server([[errno 111]连接拒绝))(此错误的背景:http://sqlalche.me/E/E3Q8)

您需要确保使用正确的 /cloudsql/<INSTANCE_CONNECTION_NAME>(这是格式 <PROJECT_ID>:<REGION>:<INSTANCE_ID>)。如果您的云SQL实例与您的功能在同一项目和区域中,那么这应该是所有需要的。

GCF文档还强烈建议将您的池限制为单个连接。这意味着您应该在引擎设置中同时设置pool_size=1max_overflow=0

如果您想查看如何设置这些设置的示例,请在GitHub上查看此示例应用程序。

我相信您的问题是在con字符串变量末尾由<PROJECT_ID>:<REGION>:<INSTANCE_ID>代表的Connection_name

顺便说一句应该引用:

con = 'mysql+pymysql://USER:PASSWORD@/MY_DB?unix_socket=/cloudsql/<PROJECT_ID>:<REGION>:<INSTANCE_ID>'

检查是否正在使用此命令正确编写:

gcloud sql instances describe <INSTANCE_ID> | grep connectionName

如果不是这种情况,请记住云功能中存在的这些注意事项官方文档:

第一代MySQL实例必须与您的云功能在同一区域。第二代MySQL实例以及PostgreSQL实例在任何区域都可以使用云功能。

您的云功能可以访问项目中的所有云SQL实例。如果您的云函数的服务帐户(在GCP控制台的云函数的常规选项卡上列出了cloud SQL实例(cloud SQL实例),则可以访问其他项目中的第二代MySQL实例以及其他项目的PostgreSQL实例(在GCP控制台的cloud Function的常规选项卡上列出)(s)具有云SQL客户端角色。

在带有Google支持的长线程之后,我们发现了:简单地,我们应该在没有任何防火墙规则的情况下公开访问云SQL。它是无证的,可以使您发疯,但是支持团队的银色子弹是:它在Beta!

我有这个问题。服务帐户是正确的,具有正确的权限,与我的App Engine应用程序相同的确切连接字符串。仍然在日志中得到这个。

dial unix /cloudsql/project:region:instance connect: no such file or directory

从第二代云功能切换到第一代求解。没有看到第二个无法连接到云SQL实例的任何地方记录的。

相关内容

  • 没有找到相关文章

最新更新