From 05be23f09e5691b3155000f7ecd1d15ea2be8847 Mon Sep 17 00:00:00 2001 From: Roland Walker Date: Sat, 21 Feb 2026 05:53:16 -0500 Subject: [PATCH] accept "socket" as a DSN query parameter --- changelog.md | 1 + mycli/main.py | 2 ++ test/test_main.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/changelog.md b/changelog.md index c51d4e9c..558818e9 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ Features * Let the `--dsn` argument accept literal DSNs as well as aliases. * Accept `--character-set` as an alias for `--charset` at the CLI. * Add SSL/TLS version to `status` output. +* Accept `socket` as a DSN query parameter. Bug Fixes diff --git a/mycli/main.py b/mycli/main.py index a3899fe0..f304933a 100755 --- a/mycli/main.py +++ b/mycli/main.py @@ -1993,6 +1993,8 @@ def get_password_from_file(password_file: str | None) -> str | None: if params := dsn_params.get('ssl_verify_server_cert'): ssl_verify_server_cert = ssl_verify_server_cert or (params[0].lower() == 'true') ssl_enable = True + if params := dsn_params.get('socket'): + socket = socket or params[0] ssl_mode = ssl_mode or mycli.ssl_mode # cli option or config option diff --git a/test/test_main.py b/test/test_main.py index 1415f598..7a96d1de 100644 --- a/test/test_main.py +++ b/test/test_main.py @@ -929,6 +929,20 @@ def run_query(self, query, new_line=True): and MockMyCli.connect_args['database'] == 'dsn_database' ) + # accept socket as a query parameter + result = runner.invoke( + mycli.main.cli, + args=[ + 'mysql://dsn_user:dsn_passwd@localhost/dsn_database?socket=mysql.sock', + ], + ) + assert result.exit_code == 0, result.output + ' ' + str(result.exception) + assert MockMyCli.connect_args['user'] == 'dsn_user' + assert MockMyCli.connect_args['passwd'] == 'dsn_passwd' + assert MockMyCli.connect_args['host'] == 'localhost' + assert MockMyCli.connect_args['database'] == 'dsn_database' + assert MockMyCli.connect_args['socket'] == 'mysql.sock' + def test_ssh_config(monkeypatch): # Setup classes to mock mycli.main.MyCli