def connect_with_data_source(driver_dsn): driver, dsn = driver_dsn.split("://") if driver == "mysql": # NOTE: use MySQLdb to avoid bugs like infinite reading: # https://bugs.mysql.com/bug.php?id=91971 from MySQLdb import connect user, passwd, host, port, database, config = parseMySQLDSN(dsn) conn = connect(user=user, passwd=passwd, db=database, host=host, port=int(port)) elif driver == "hive": from impala.dbapi import connect user, passwd, host, port, database, auth, session_cfg = parseHiveDSN( dsn) conn = connect(user=user, password=passwd, database=database, host=host, port=int(port), auth_mechanism=auth) conn.session_cfg = session_cfg conn.default_db = database elif driver == "maxcompute": from sqlflow_submitter.maxcompute import MaxCompute user, passwd, address, database = parseMaxComputeDSN(dsn) conn = MaxCompute.connect(database, user, passwd, address) else: raise ValueError( "connect_with_data_source doesn't support driver type {}".format( driver)) conn.driver = driver return conn
def connect(driver, database, user, password, host, port, session_cfg={}, auth=""): if driver == "mysql": # NOTE: use MySQLdb to avoid bugs like infinite reading: # https://bugs.mysql.com/bug.php?id=91971 from MySQLdb import connect return connect(user=user, passwd=password, db=database, host=host, port=int(port)) elif driver == "hive": from impala.dbapi import connect conn = connect(user=user, password=password, database=database, host=host, port=int(port), auth_mechanism=auth) conn.default_db = database conn.session_cfg = session_cfg return conn elif driver == "maxcompute": from sqlflow_submitter.maxcompute import MaxCompute return MaxCompute.connect(database, user, password, host) raise ValueError("unrecognized database driver: %s" % driver)