From f5654bdeee01df55a1125af0f6201a25ab2df4a8 Mon Sep 17 00:00:00 2001 From: egalpin Date: Wed, 7 Feb 2018 17:01:31 -0500 Subject: [PATCH] Adds multiple host handling via DSN parsing --- asyncpg/connect_utils.py | 2 +- tests/test_connect.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/asyncpg/connect_utils.py b/asyncpg/connect_utils.py index da616523..88982e39 100644 --- a/asyncpg/connect_utils.py +++ b/asyncpg/connect_utils.py @@ -64,7 +64,7 @@ def _parse_connect_dsn_and_args(*, dsn, host, port, user, port = int(parsed.port) if parsed.hostname and host is None: - host = parsed.hostname + host = parsed.hostname.split(',') if parsed.path and database is None: database = parsed.path diff --git a/tests/test_connect.py b/tests/test_connect.py index 3bc49d95..4d9930c4 100644 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -316,6 +316,14 @@ class TestConnectParams(tb.TestCase): 'dsn': 'pq:///dbname?host=/unix_sock/test&user=spam', 'error': (ValueError, 'invalid DSN') }, + + { + 'dsn': 'postgres://user3:123123@localhost,127.0.0.1:5555/abcdef', + 'result': ([('localhost', 5555), ('127.0.0.1', 5555)], { + 'user': 'user3', + 'password': '123123', + 'database': 'abcdef'}) + }, ] @contextlib.contextmanager