Esempio n. 1
0
 def mdb_con(self):
     """
     Get MySQL connection.
     """
     if self.use_c_api and c_flag:
         con = _mysql_connector.MySQL()
         con.connect(**self.kwargs)
         con.set_character_set(self.charset)
         con.use_unicode(self.use_unicode)
         con.autocommit(self.autocommit)
         charset = "utf8mb4" if self.is_utf8mb4 else self.charset
         con.query("SET NAMES {charset};".format(charset=charset))
         con.query("SET CHARACTER SET {charset};".format(charset=charset))
         con.query("SET character_set_connection={charset};".format(
             charset=charset))
         con.commit()
         return con
     if self.use_c_api and not c_flag:
         logger.warning(
             'Get "_mysql_connector" failed, fall back to strictly use "mysql.connector"...'
         )
     return mysql.connector.connect(charset=self.charset,
                                    use_unicode=self.use_unicode,
                                    autocommit=self.autocommit,
                                    **self.kwargs)
Esempio n. 2
0
def get_con(use_c_api=True,
            charset="utf8",
            use_unicode=False,
            autocommit=False,
            **kwargs):
    """
    Get MySQL connection.
    """
    if use_c_api and c_flag:
        con = _mysql_connector.MySQL()
        con.connect(**kwargs)
        con.set_character_set(charset)
        con.use_unicode(use_unicode)
        con.autocommit(autocommit)
        con.query("SET NAMES {charset};".format(charset=charset))
        con.query("SET CHARACTER SET {charset};".format(charset=charset))
        con.query(
            "SET character_set_connection={charset};".format(charset=charset))
        con.commit()
        return con
    if use_c_api and not c_flag:
        logger.warning(
            'Get "_mysql_connector" failed, fall back to strictly use "mysql.connector"...'
        )
    return mysql.connector.connect(charset=charset,
                                   use_unicode=use_unicode,
                                   autocommit=autocommit,
                                   **kwargs)
Esempio n. 3
0
    def _open_connection(self):
        charset_name = CharacterSet.get_info(self._charset_id)[0]
        self._cmysql = _mysql_connector.MySQL(  # pylint: disable=E1101,I1101
            buffered=self._buffered,
            raw=self._raw,
            charset_name=charset_name,
            connection_timeout=(self._connection_timeout or 0),
            use_unicode=self._use_unicode,
            auth_plugin=self._auth_plugin)

        if not self.isset_client_flag(ClientFlag.CONNECT_ARGS):
            self._conn_attrs = {}
        cnx_kwargs = {
            'host': self._host,
            'user': self._user,
            'password': self._password,
            'database': self._database,
            'port': self._port,
            'client_flags': self._client_flags,
            'unix_socket': self._unix_socket,
            'compress': self.isset_client_flag(ClientFlag.COMPRESS),
            'ssl_disabled': True,
            "conn_attrs": self._conn_attrs
        }

        if not self._ssl_disabled:
            cnx_kwargs.update({
                'ssl_ca':
                self._ssl.get('ca'),
                'ssl_cert':
                self._ssl.get('cert'),
                'ssl_key':
                self._ssl.get('key'),
                'ssl_verify_cert':
                self._ssl.get('verify_cert') or False,
                'ssl_verify_identity':
                self._ssl.get('verify_identity') or False,
                'ssl_disabled':
                self._ssl_disabled
            })

        try:
            self._cmysql.connect(**cnx_kwargs)
        except MySQLInterfaceError as exc:
            raise errors.get_mysql_exception(msg=exc.msg,
                                             errno=exc.errno,
                                             sqlstate=exc.sqlstate)
        self._do_handshake()
Esempio n. 4
0
    def _open_connection(self):
        charset_name = CharacterSet.get_info(self._charset_id)[0]

        self._cmysql = _mysql_connector.MySQL(
            buffered=self._buffered,
            raw=self._raw,
            charset_name=charset_name,
            connection_timeout=int(self._connection_timeout or 10),
            use_unicode=self._use_unicode,
            auth_plugin=self._auth_plugin)

        cnx_kwargs = {
            'host': self._host,
            'user': self._user,
            'password': self._password,
            'database': self._database,
            'port': self._port,
            'client_flags': self._client_flags,
            'unix_socket': self._unix_socket,
            'compress': self.isset_client_flag(ClientFlag.COMPRESS)
        }

        if self.isset_client_flag(ClientFlag.SSL):
            cnx_kwargs.update({
                'ssl_ca': self._ssl['ca'],
                'ssl_cert': self._ssl['cert'],
                'ssl_key': self._ssl['key'],
                'ssl_verify_cert': self._ssl['verify_cert']
            })

        try:
            self._cmysql.connect(**cnx_kwargs)
        except MySQLInterfaceError as exc:
            raise errors.get_mysql_exception(msg=exc.msg,
                                             errno=exc.errno,
                                             sqlstate=exc.sqlstate)
        self._do_handshake()
    def _open_connection(self):
        charset_name = CharacterSet.get_info(self._charset_id)[0]
        self._cmysql = _mysql_connector.MySQL(  # pylint: disable=E1101,I1101
            buffered=self._buffered,
            raw=self._raw,
            charset_name=charset_name,
            connection_timeout=(self._connection_timeout or 0),
            use_unicode=self._use_unicode,
            auth_plugin=self._auth_plugin,
            plugin_dir=self._plugin_dir)
        if not self.isset_client_flag(ClientFlag.CONNECT_ARGS):
            self._conn_attrs = {}
        cnx_kwargs = {
            'host': self._host,
            'user': self._user,
            'password': self._password,
            'password1': self._password1,
            'password2': self._password2,
            'password3': self._password3,
            'database': self._database,
            'port': self._port,
            'client_flags': self._client_flags,
            'unix_socket': self._unix_socket,
            'compress': self.isset_client_flag(ClientFlag.COMPRESS),
            'ssl_disabled': True,
            "conn_attrs": self._conn_attrs,
            "local_infile": self._allow_local_infile,
            "load_data_local_dir": self._allow_local_infile_in_path,
            "oci_config_file": self._oci_config_file,
        }

        tls_versions = self._ssl.get('tls_versions')
        if tls_versions is not None:
            tls_versions.sort(reverse=True)
            tls_versions = ",".join(tls_versions)
        if self._ssl.get('tls_ciphersuites') is not None:
            ssl_ciphersuites = self._ssl.get('tls_ciphersuites')[0]
            tls_ciphersuites = self._ssl.get('tls_ciphersuites')[1]
        else:
            ssl_ciphersuites = None
            tls_ciphersuites = None
        if tls_versions is not None and "TLSv1.3" in tls_versions and \
           not tls_ciphersuites:
            tls_ciphersuites = "TLS_AES_256_GCM_SHA384"
        if not self._ssl_disabled:
            cnx_kwargs.update({
                'ssl_ca':
                self._ssl.get('ca'),
                'ssl_cert':
                self._ssl.get('cert'),
                'ssl_key':
                self._ssl.get('key'),
                'ssl_cipher_suites':
                ssl_ciphersuites,
                'tls_versions':
                tls_versions,
                'tls_cipher_suites':
                tls_ciphersuites,
                'ssl_verify_cert':
                self._ssl.get('verify_cert') or False,
                'ssl_verify_identity':
                self._ssl.get('verify_identity') or False,
                'ssl_disabled':
                self._ssl_disabled
            })

        try:
            self._cmysql.connect(**cnx_kwargs)
            self._cmysql.converter_str_fallback = self._converter_str_fallback
            if self.converter:
                self.converter.str_fallback = self._converter_str_fallback
        except MySQLInterfaceError as exc:
            raise errors.get_mysql_exception(msg=exc.msg,
                                             errno=exc.errno,
                                             sqlstate=exc.sqlstate)

        self._do_handshake()