我很遗憾,我正在尝试通过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() 

请您参考如下方法:

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

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!