如何在部署应用程序后在Windows上使用Python 3.5连接到具有灵活环境的Cloud SQL?

时间:2018-03-14 21:46:11

标签: django python-3.x google-app-engine google-cloud-sql app-engine-flexible

我在this链接后成功部署了一个应用。

部署后,我无法连接到Cloud SQL。在我的IPython笔记本中,在部署我的应用程序之前,我可以使用以下语句使用Google SDK连接到我的云实例:

cloud_sql_proxy.exe -instances="project_name:us-east1:instance_name"=tcp:3306

输入上述内容后,我会在Google Cloud Shell中收到通知

"listening on 127.0.0.1:3306 for project_name:us-east1:instance_name 
ready for new connections"

然后我使用我的IPython笔记本来测试连接:

host = '127.0.0.1' (also changed to my my ip address for google cloud sql)
user = 'cloud_sql_user'
password = 'cloud_sql_password'

conn1 = pymysql.connect(host=host,
                         user=user,
                         password=password,
                         db='mydb')
cur1 = conn1.cursor()

本地测试结果:可以从IPython连接到Cloud SQL并查询云数据库。下一步:部署

gcloud app deploy

结果:已部署应用。但是,在导航到我的网站并在输入字段中输入名称时,它会转到我的新URL并收到错误:

OperationalError at /search/

(20033), "Can't connect to MySQL server on 127.0.0.1 (timed out))

我的主要问题是:

  • 如何在部署后将PyMySQL查询导入云数据库?
  • 如果我使用的是Windows并且需要连接到他们的云数据库,我是否需要一个Gunicorn?
  • 我需要SQL炼金术吗?我没有使用ORM。在线说明并不是那么清楚。我的本地主机是在Windows 7,Python 3和Django上。

编辑:我根据下面用户的建议编辑了文件。我仍然收到错误'连接超时'

2 个答案:

答案 0 :(得分:1)

找到它。将pymysql中的套接字更改为unix_socket =“您的云连接字符串名称”。让主机成为'localhost',user ='你的云用户名'和密码='你的云sql密码'

编辑:不要忘记连接字符串名称中的/ cloud / part

答案 1 :(得分:0)

这篇帖子已经有点老了,我希望你已经解决了这个问题!

你检查一下你是否正在制作这样的作品: if os.getenv('GAE_INSTANCE'):

在文档中,他们以这种方式管理它: if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):

我认为因为这个条件错误,您将DATABASES['default']['HOST']值覆盖为'127.0.0.1'

希望这将是您正在寻找的答案!