Google 云 SQL - OS 环境未设置为 Google App Engine

Google Cloud SQL - OS environment not set to Google App Engine

我正在尝试连接到 python 中的 Google 云 SQL 实例,并且已经完成了 google 的教程:https://cloud.google.com/appengine/docs/python/cloud-sql/

我基本上是在克隆 google 的教程代码,但出于某种原因,这条线对我来说不合适:

if (os.getenv('SERVER_SOFTWARE') and
  os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/')):

这个 if 语句没有被输入,我不确定为什么 - 然后它默认访问基于 else 语句的本地数据库。 os server_software环境是怎么设置的?我对这一切都不熟悉,但基本上是因为没有设置,我无法访问我的 google 云 sql 实例。如何确保输入此 if 语句?

SERVER_SOFTWARE是GAE自动设置的环境变量。部署时可以是 Google App Engine/x.x.xx,本地 运行ning 时可以是 Development/x.x

基本上,您所指的代码部分会检查您的应用程序是否已部署并 运行正在 GAE 服务器上运行,如果是,它将连接到 Google 云 SQL 实例,否则,如果您的应用程序在本地 运行ning,它将尝试连接到本地 mysql 实例。

这样做是因为您通常不想在本地开发和测试时弄乱您的生产(已部署)数据,因为很多事情都可能出错。

由于您声明未输入 if 语句 - 可以安全地假设您正在本地尝试 运行 该程序,但希望它连接到 Google 云SQL 例如,为此,您提供的示例中接下来的几行将解释如何操作:

db = MySQLdb.connect(host='127.0.0.1', port=3306, db='guestbook', user='root', charset='utf8')
# Alternatively, connect to a Google Cloud SQL instance using:
# db = MySQLdb.connect(host='ip-address-of-google-cloud-sql-instance', port=3306, user='root', charset='utf8')

所以你需要做的是注释掉第一行(它试图连接到本地主机 mysql 服务器的那一行)并取消注释它连接到 Google 云的那一行 SQL 实例(请注意,您必须更新几个反映您的配置的参数,即 host 参数和可能的其他参数)。