diff --git a/asyncpg/connect_utils.py b/asyncpg/connect_utils.py index 3b5b725e..ee7f8af9 100644 --- a/asyncpg/connect_utils.py +++ b/asyncpg/connect_utils.py @@ -211,7 +211,7 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user, if not host and parsed.netloc: if '@' in parsed.netloc: - auth, _, hostspec = parsed.netloc.partition('@') + auth, _, hostspec = parsed.netloc.rpartition('@') else: hostspec = parsed.netloc diff --git a/tests/test_connect.py b/tests/test_connect.py index 1ad457ee..27ad4abd 100644 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -402,6 +402,14 @@ class TestConnectParams(tb.TestCase): } ) }, + + { + 'dsn': 'postgresql://some@user@host1/db', + 'result': ([('host1', 5432)], { + 'database': 'db', + 'user': 'some@user', + }) + }, ] @contextlib.contextmanager