Google Cloud SQL - 未设置为Google App Engine的操作系统环境

时间:2015-07-29 06:31:11

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

我正在尝试连接到python中的Google Cloud SQL实例,并通过了Google的教程:https://cloud.google.com/appengine/docs/python/cloud-sql/

我基本上是克隆谷歌的教程代码,由于某种原因,这条线路对我来说并不合适:

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

这个if语句没有输入,我不知道为什么 - 然后默认根据else语句访问本地数据库。 os server_software环境是如何设置的?我对所有这些都是新手,但主要是因为没有设置,我无法访问我的google云sql实例。如何确保输入if语句?

1 个答案:

答案 0 :(得分:2)

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

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

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

由于您声明未输入if语句,因此可以安全地假设您尝试在本地运行该程序,但希望它能够连接到Google Cloud 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')

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

相关问题