【问题标题】:Connect to MySQL on GCE using Google Colaboratory使用 Google Colaboratory 连接到 GCE 上的 MySQL
【发布时间】:2020-10-04 20:40:24
【问题描述】:

我正在尝试通过 Google Colaboratory 访问 GCE VM 实例上的 MySQL,但不幸的是,它无法正常工作,但在本地 VSCode 环境中可以工作。

在执行TestExec.py时,它显示SSH Connected,所以看起来ssh连接成功了,但是,它似乎卡在了MySQL连接上。

Google Colab 上的输出:

请提供解决方案/提示?

    sqlList = []
    sqlList.append("select * from table name;")
    HOST = 'ComputeEngine PublicIP'
    PORT = 22
    USER = 'username'
    DBUSER = 'username for db'
    KEY_FILE = 'private key file path'
    DBNAME = 'dbname'
    DBPORT = 3306
    SSH_BASTION_ADDRESS = HOST
    SSH_PORT = PORT
    SSH_USER = USER
    SSH_PKEY_PATH = KEY_FILE
    MYSQL_HOST = HOST
    MYSQL_PORT = 3306
    MYSQL_USER = DBUSER
    MYSQL_PASS = 'MySQL Login PW'
    MYSQL_DB = DBNAME

    with SSHTunnelForwarder(
        (SSH_BASTION_ADDRESS, SSH_PORT),
        ssh_pkey=SSH_PKEY_PATH,
        ssh_username=SSH_USER,
        # ssh_password=PASSPHRASE,
        remote_bind_address=('localhost', MYSQL_PORT),
        local_bind_address=('localhost', MYSQL_PORT)
    ) as ssh:
        print("SSH Connected")
        print(ssh.local_bind_port)
        try:
            connection = mysql.connector.connect(
                host='localhost',
                port = ssh.local_bind_port,
                user=MYSQL_USER,
                passwd=MYSQL_PASS,
                db=MYSQL_DB,
                charset='utf8'
            )
            print(connection.is_connected())
            print("DB Connected")

            cur = connection.cursor()
            sql = "use dbname"
            cur.execute(sql)
            # rows = cur.fetchall()
            # for row in rows:
            #     print(row)

            for i in range(len(sqlList)):
                print(sqlList[i])
                sql = str(sqlList[i])
            # sql = 'create table test (id int, content varchar(32))'
                cur.execute(sql)

            rows = cur.fetchall()
            for row in rows:
                print(row)
        except mysql.connector.Error as err:
            print("Something went wrong: {}".format(err))
            connection.rollback()
            raise err
        finally:
            cur.close()
            connection.commit()
            connection.close()

【问题讨论】:

  • 您能否更具体地说明与 MySQL 的连接不工作,可能是屏幕截图或错误消息?
  • 没有发生错误。它停留在我附上图片的那一刻

标签: python mysql ssh google-compute-engine google-colaboratory


【解决方案1】:

似乎由于连接而发生错误。我改变了连接方式。

import pymysql.cursors
connection = pymysql.connect(
  host='localhost', 
  user='user', 
  password='password!', 
  db='dbname', 
  charset='utf8mb4', 
  cursorclass=pymysql.cursors.DictCursor
)

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2018-04-23
    • 2015-10-23
    • 2018-08-23
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多