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



我通过链接成功部署了一个应用程序。

部署后,我在连接到云 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'

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

相关内容

  • 没有找到相关文章

最新更新