diff --git a/CHANGELOG.md b/CHANGELOG.md index a58f452..5e2bf92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,14 @@ ### Fixes - Fix incremental composite keys ([#144](https://github.com/dbeatty10/dbt-mysql/issues/144)) +- Fix UnicodeDecodeErorr on setup.py ([#160](https://github.com/dbeatty10/dbt-mysql/issues/160)) ### Contributors - [@lpezet](https://github.com/lpezet) ([#146](https://github.com/dbeatty10/dbt-mysql/pull/146)) - [@moszutij](https://github.com/moszutij) ([#146](https://github.com/dbeatty10/dbt-mysql/pull/146), [#144](https://github.com/dbeatty10/dbt-mysql/issues/144)) - [@wesen](https://github.com/wesen) ([#146](https://github.com/dbeatty10/dbt-mysql/pull/146)) - [@mwallace582](https://github.com/mwallace582) ([#162](https://github.com/dbeatty10/dbt-mysql/pull/162), [#163](https://github.com/dbeatty10/dbt-mysql/pull/163), [#164](https://github.com/dbeatty10/dbt-mysql/issues/164), [#138](https://github.com/dbeatty10/dbt-mysql/issues/138)) +- [@sagunn-echo](https://github.com/sagunn-echo) ([#160](https://github.com/dbeatty10/dbt-mysql/issues/160)) ## dbt-mysql 1.1.0 (Feb 5, 2023) diff --git a/README.md b/README.md index b901ce4..5a305a7 100644 --- a/README.md +++ b/README.md @@ -86,17 +86,21 @@ your_profile_name: username: your_mysql_username password: your_mysql_password ssl_disabled: True + charset: utf8mb4 + collation: utf8mb4_0900_ai_ci ``` | Option | Description | Required? | Example | | --------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------- | -| type | The specific adapter to use | Required | `mysql`, `mysql5` or `mariadb` | +| type | The specific adapter to use | Required | `mysql`, `mysql5` or `mariadb` | | server | The server (hostname) to connect to | Required | `yourorg.mysqlhost.com` | | port | The port to use | Optional | `3306` | | schema | Specify the schema (database) to build models into | Required | `analytics` | | username | The username to use to connect to the server | Required | `dbt_admin` | | password | The password to use for authenticating to the server | Required | `correct-horse-battery-staple` | | ssl_disabled | Set to enable or disable TLS connectivity to mysql5.x | Optional | `True` or `False` | +| charset | Specify charset to be used by a connection | Optional | `utf8mb4` | +| collation | Set to enable or disable TLS connectivity to mysql5.x | Optional | `utf8mb4_0900_ai_ci` | ### Notes diff --git a/dbt/adapters/mariadb/connections.py b/dbt/adapters/mariadb/connections.py index 94c9428..6e463de 100644 --- a/dbt/adapters/mariadb/connections.py +++ b/dbt/adapters/mariadb/connections.py @@ -26,6 +26,7 @@ class MariaDBCredentials(Credentials): password: Optional[str] = None charset: Optional[str] = None ssl_disabled: Optional[bool] = None + collation: Optional[str] = None _ALIASES = { "UID": "username", @@ -98,6 +99,12 @@ def open(cls, connection): if credentials.port: kwargs["port"] = credentials.port + if credentials.charset: + kwargs["charset"] = credentials.charset + + if credentials.collation: + kwargs["collation"] = credentials.collation + try: connection.handle = mysql.connector.connect(**kwargs) connection.state = "open" diff --git a/dbt/adapters/mysql/connections.py b/dbt/adapters/mysql/connections.py index 353d5ce..0e2af00 100644 --- a/dbt/adapters/mysql/connections.py +++ b/dbt/adapters/mysql/connections.py @@ -25,6 +25,7 @@ class MySQLCredentials(Credentials): username: Optional[str] = None password: Optional[str] = None charset: Optional[str] = None + collation: Optional[str] = None _ALIASES = { "UID": "username", @@ -94,6 +95,12 @@ def open(cls, connection): if credentials.port: kwargs["port"] = credentials.port + if credentials.charset: + kwargs["charset"] = credentials.charset + + if credentials.collation: + kwargs["collation"] = credentials.collation + try: connection.handle = mysql.connector.connect(**kwargs) connection.state = "open" diff --git a/dbt/adapters/mysql5/connections.py b/dbt/adapters/mysql5/connections.py index 0160bd9..ee7cbc5 100644 --- a/dbt/adapters/mysql5/connections.py +++ b/dbt/adapters/mysql5/connections.py @@ -26,6 +26,7 @@ class MySQLCredentials(Credentials): password: Optional[str] = None charset: Optional[str] = None ssl_disabled: Optional[bool] = None + collation: Optional[str] = None _ALIASES = { "UID": "username", @@ -98,6 +99,12 @@ def open(cls, connection): if credentials.port: kwargs["port"] = credentials.port + if credentials.charset: + kwargs["charset"] = credentials.charset + + if credentials.collation: + kwargs["collation"] = credentials.collation + try: connection.handle = mysql.connector.connect(**kwargs) connection.state = "open" diff --git a/dev-requirements.txt b/dev-requirements.txt index 161b0a0..70ec428 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -5,9 +5,10 @@ git+https://github.com/dbt-labs/dbt-core.git@1.7.latest#egg=dbt-tests-adapter&su # if version 1.x or greater -> pin to major version # if version 0.x -> pin to minor -black~=22.12 +black~=24.3 bumpversion~=0.6.0 ddtrace~=2.3 +jsonschema<=4.17 flake8~=6.1 flaky~=3.7 freezegun~=1.3 diff --git a/setup.py b/setup.py index f257d6f..dbc957f 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ # pull long description from README this_directory = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(this_directory, "README.md")) as f: +with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f: long_description = f.read() @@ -68,7 +68,7 @@ def _get_dbt_core_version(): include_package_data=True, install_requires=[ "dbt-core~={}".format(dbt_core_version), - "mysql-connector-python>=8.0.0,<8.1", + "mysql-connector-python>=8.0.0", ], zip_safe=False, classifiers=[