diff --git a/dataset/persistence/database.py b/dataset/persistence/database.py index 019348a..02ed958 100644 --- a/dataset/persistence/database.py +++ b/dataset/persistence/database.py @@ -16,7 +16,7 @@ from alembic.migration import MigrationContext from alembic.operations import Operations from dataset.persistence.table import Table -from dataset.persistence.util import ResultIter, row_type +from dataset.persistence.util import ResultIter, row_type, safe_url from dataset.util import DatasetException log = logging.getLogger(__name__) @@ -281,4 +281,4 @@ class Database(object): row_type=self.row_type) def __repr__(self): - return '' % self.url + return '' % safe_url(self.url) diff --git a/dataset/persistence/util.py b/dataset/persistence/util.py index b67a348..e73cc6d 100644 --- a/dataset/persistence/util.py +++ b/dataset/persistence/util.py @@ -1,4 +1,5 @@ from datetime import datetime +import urlparse try: from collections import OrderedDict @@ -76,3 +77,12 @@ class ResultIter(object): def __iter__(self): return self + + +def safe_url(url): + """ Remove password from printed connection URLs. """ + parsed = urlparse.urlparse(url) + if parsed.password is not None: + pwd = ':%s@' % parsed.password + url = url.replace(pwd, ':*****@') + return url