Py学习  »  Python

从Python中的数据流连接到CloudSQL

IoT user • 4 年前 • 330 次点击  

我正试图用一个python管道连接到CloudSQL。


实际情况

  • 我可以使用DirectRunner毫无问题地完成
  • 我无法使用DataflowRunner连接

连接函数

def cloudSQL(input):
    import pymysql
    connection = pymysql.connect(host='<server ip>',
                                   user='...',
                                   password='...',
                                   db='...')
    cursor = connection.cursor()
    cursor.execute("select ...")
    connection.close()
    result = cursor.fetchone()
    if not (result is None):
        yield input

错误

这是使用DataflowRunner的错误消息

OperationalError: (2003, "Can't connect to MySQL server on '<server ip>' (timed out)")

云SQL

我有publicIP(要用directrunner从本地测试),我还试图激活私有IP,看看这是否是连接DataflowRunner的问题


选项2

我也试过

connection = pymysql.connect((unix_socket='/cloudsql/' + <INSTANCE_CONNECTION_NAME>,
                               user='...',
                               password='...',
                               db='...')

出现错误:

OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)")
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49631
 
330 次点击  
文章 [ 3 ]  |  最新文章 4 年前
IoT user
Reply   •   1 楼
IoT user    5 年前

带着这个 solution 我可以访问CloudSQL。

出于测试目的,您可以在不使用证书的情况下将0.0.0.0/0添加到CloudSQL publicIP

Omair
Reply   •   2 楼
Omair    5 年前

您必须模拟Python中JdbcIO.read()的实现,如下面所述 StackOverflow answer

kurtisvg
Reply   •   3 楼
kurtisvg    5 年前

看看 Cloud SQL Proxy . 它将创建一个本地入口点(Unix套接字或TCP端口,具体取决于您的配置),该入口点将代理和验证到您的云SQL实例的连接。