【问题标题】:How to connect to Cloud SQL w/ Flexible Env using Python 3.5 on Windows after app deployment?应用部署后,如何在 Windows 上使用 Python 3.5 连接到带有灵活环境的 Cloud SQL?
【发布时间】:2018-03-14 21:46:10
【问题描述】:

我按照this 链接成功部署了一个应用程序。

部署后,我无法连接到 Cloud SQL。在我的 IPython notebook 中,在部署我的应用程序之前,我可以使用以下语句使用 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 上。

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

【问题讨论】:

  • 有人可以帮忙吗?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    你检查你是否像这样在生产中: if os.getenv('GAE_INSTANCE'):

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

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

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

    【讨论】:

    • 一点友好的建议:您的答案看起来确实不错,而且都是针对新用户的,但您的用户名已被报告为冒犯性的。我建议你改变它,并祝你在 SO 上好运。
    • 这个更好吗?前一个是我真正的昵称,因为这是英国人如何发音我的姓氏^^没有别的!
    • 呃,不完全是。请选择另一个 (urbandictionary.com/define.php?term=Puss-puss)
    • 嘿,不,我没有解决这个问题。抱歉刚刚看到你的消息。对不起,你能说得更清楚一点。我应该改变什么?
    • 嘿,我尝试了您的更改,但在 localhost 上连接被拒绝。有什么帮助吗?我应该在对 pymysql 的内部调用中更改任何内容吗?像 pymysql.connect(host_name?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2017-12-27
    • 1970-01-01
    • 2018-09-01
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多