charset_normalizer Warning Filter added by requests.packages.py breaks mysql connector's ability to issue DB warnings using warnings.warn()

The mysql connector encounters the following exception when trying to issue DB warnings via `warnings.warn()` due to the warnings.filter() added by the requests.packages.py module.  This occurs when chardet is not installed and importing both mysql-connector-python and requests, where mysql connector is not using the C extension.

When mysql connector tries to issue a DB warning
`TypeError: expected string or bytes-like object DB warnings `

when requests adds this Warning Filter In requests.packages.py
```
try:
    import chardet
except ImportError:
    import warnings

    import charset_normalizer as chardet

    warnings.filterwarnings("ignore", "Trying to detect", module="charset_normalizer")
```


## Expected Result

requests does not insert Warning Filters that impact the ability of other libraries to execute warnings.warn().  Specifically mysql connector can issue DB warnings without error.

## Actual Result

When the following code from mysql-connector-python cursor.py is executed, the following error is encountered

`TypeError: expected string or bytes-like object DB warnings `

## Reproduction Steps

```import warnings
import mysql.connector

def simulate_db_warning():
    # This is the code that is called inside mysql connector when a DB warning is issued
    # see mysql.connector.cursor _handle_warnings
    err = mysql.connector.cursor.get_mysql_exception(1062, "Test DB warning", warning=True)
    print(f"type(err): {type(err)}")
    print(f"err: {err}")
    warnings.warn(err, stacklevel=4)

print("Test before import requests")
simulate_db_warning()  # succeeds

import requests

print("\nTest after import requests")
simulate_db_warning()  # TypeError

```

## System Information
note: mysql-connector-python==8.0.32

    $ python -m requests.help


```json
{
  "chardet": {
    "version": null
  },
  "charset_normalizer": {
    "version": "3.1.0"
  },
  "cryptography": {
    "version": ""
  },
  "idna": {
    "version": "3.4"
  },
  "implementation": {
    "name": "CPython",
    "version": "3.8.12"
  },
  "platform": {
    "release": "21.6.0",
    "system": "Darwin"
  },
  "pyOpenSSL": {
    "openssl_version": "",
    "version": null
  },
  "requests": {
    "version": "2.28.2"
  },
  "system_ssl": {
    "version": "101010ff"
  },
  "urllib3": {
    "version": "1.26.15"
  },
  "using_charset_normalizer": true,
  "using_pyopenssl": false
}
```

<!-- This command is only available on Requests v2.16.4 and greater. Otherwise,
please provide some basic information about your system (Python version,
operating system, &c). -->


Please provide the full stack trace 

> Please provide the full stack trace

@sigmavirus24 I've added output with stacktrace to Actual Results above.

Also I've found a simpler way to illustrate the issue...

```
❯ python3
Python 3.8.5 (v3.8.5:580fbb018f, Jul 20 2020, 12:11:27)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import warnings
>>> e = Exception()
>>>
>>> # this works when passed an Exception, similar to how mysql issues warnings 
>>> warnings.warn(e, stacklevel=4)
sys:1: UserWarning:
>>>
>>> # simulate the filter added by importing requests.packages.py module
>>> # now warnings.warn() raises TypeError when passed an Exception
>>> warnings.filterwarnings("ignore", "Trying to detect", module="charset_normalizer")
>>> warnings.warn(e, stacklevel=4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected string or bytes-like object
>>> quit()

```


What you've shown is that the MySQL library you're using is doing the wrong thing. Exceptions shouldn't be sent to the warnings module as the message. The first parameter is always a string message and the second is a warning class (which inherits from Exception). 

This is all well documented in the standard library. Filtering warnings is common and causes no issues for libraries using the warnings module correctly. We can't adjust things just because people may do something incorrectly elsewhere 

@sigmavirus24 Thanks for the follow up.

I'm not very familiar with the warnings module.  I looked at the docs and unless I'm misunderstanding, the message arg to warnings.warn() can be a Warning instance (which inherits from Exception).

from: https://docs.python.org/3/library/warnings.html#warnings.warn

> warnings.**warn**(message, category=None, stacklevel=1, source=None)

>   Issue a warning, or maybe ignore it or raise an exception. The category argument, if given, must be a [warning category 
 class](https://docs.python.org/3/library/warnings.html#warning-categories); it defaults to [UserWarning](https://docs.python.org/3/library/exceptions.html#UserWarning). Alternatively, message can be a [Warning](https://docs.python.org/3/library/exceptions.html#Warning) instance, in which case category will be ignored and message.__class__ will be used. In this case, the message text will be str(message).

If the message arg to warnings.warn() can be a Warning instance, and mysql is passing a Warning instance to warn(), then can you help me understand exactly what the MySQL library is doing wrong so that I can be clear in filing a bug with the MySQL python library?