【问题标题】:How to connect MySQLdb code to google cloud SQL?如何将 MySQLdb 代码连接到谷歌云 SQL?
【发布时间】:2019-06-02 12:08:19
【问题描述】:

我有一个烧瓶服务器,我想在 Google Cloud Platform 上部署它。代码使用 MySQLdb 库以如下方式连接本地 MySQL 实例:

@app.route('/show_table', methods=['POST'])
def login():
    db = MySQLdb.connect("localhost", "root", "", "db_name")
    cursor = db.cursor()
    query = "select * from table_name;"
    cursor.execute(query)
    res = cursor.fetchall()
    return res, 200

但我想将此代码连接到 Cloud SQL,而不是本地 MySQL 实例,以便它从云中读取数据。我应该对此代码进行哪些更改?我目前在 Google Cloud Platform 中创建了一个项目,并在该项目中创建了一个 Cloud SQL 实例。我还通过以下方法在此实例中创建了所需的表 this教程。

【问题讨论】:

    标签: mysql flask google-cloud-platform mysql-python google-cloud-sql


    【解决方案1】:

    您不必过多地更改代码,这仅取决于您将如何连接到数据库。 Google documentation 包含有关如何从外部应用程序连接到 Cloud SQL 的分步信息。

    由于您没有使用 Java 或 GO,因此有两种选择:

    1. 使用 Cloud SQL 代理
    2. 在 Cloud SQL 实例页面上将您的服务器的公共 IP 地址列入白名单

    所有步骤都在文档中,但基本上说如果您使用代理,则需要启用 Cloud SQL Admin API,在本地计算机上安装代理客户端并对其进行身份验证。有几个authentication optionsrecommended way 正在使用控制台从服务帐户创建凭据文件,并在您首次启动代理时将该文件作为参数传递。获得proxy running 后,该文档将提供有关如何使用 TCP 或 UNIX 套接字connect 的示例。使用 TCP,您将使用代理作为 localhost,因此您不必更改代码。使用 UNIX 套接字,您将使用实例连接名称,您可以在 GCP 控制台的实例详细信息中找到该名称。 MySQLdb 两者都支持。

    使用second option,您需要允许从特定 IP 地址范围访问您的 Cloud SQL 实例。转到 Cloud SQL 实例详细信息页面中的连接选项卡,然后添加要用于连接到数据库的 IP 地址(使用 CIDR 表示法)。一旦它被列入白名单,您就可以使用 Cloud SQL 实例的公共 IP(您可以在实例详细信息中找到)代替 localhost 连接到您的数据库。

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 2021-01-25
      • 2021-10-05
      • 2019-05-23
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多