首页 文章

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

提问于
浏览
1

我正在尝试连接到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环境是如何设置的?我是所有这一切的新手,但基本上因为没有设置,我无法访问我的谷歌 Cloud sql实例 . 如何确保输入if语句?

1 回答

  • 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 参数和其他可能的参数 .

相关问题