我通过此链接成功部署了一个应用程序。
部署后,我在连接到云 SQL 时遇到问题。在我的 IPython 笔记本中,在部署应用之前,我可以使用以下语句通过 Google SDK 连接到我的云实例:
cloud_sql_proxy.exe -instances="project_name:us-east1:instance_name"=tcp:3306
输入上述内容后,我在谷歌云外壳中收到通知
"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上。
编辑:我根据以下用户的建议编辑了文件。 我仍然收到错误"连接超时">
找到了。 将 pymysql 中的套接字更改为 unix_socket ="您的云连接字符串名称"。 让主机为"本地主机",用户="您的云用户名",密码="您的云sql密码">
编辑:不要忘记连接字符串名称中的/cloud/部分
这篇文章已经有点旧了,希望你已经解决了这个问题!
你检查你是否像这样在生产中:if os.getenv('GAE_INSTANCE'):
在文档中,他们以这种方式管理它:if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
我认为因为这个条件是错误的,所以你正在覆盖DATABASES['default']['HOST']
值'127.0.0.1'
希望这将是您正在寻找的答案!