https://github.com/canonical/pgconnstr
A Python module for parsing and manipulating PostgreSQL libpq style connection strings and URIs
https://github.com/canonical/pgconnstr
Last synced: 13 days ago
JSON representation
A Python module for parsing and manipulating PostgreSQL libpq style connection strings and URIs
- Host: GitHub
- URL: https://github.com/canonical/pgconnstr
- Owner: canonical
- License: lgpl-3.0
- Created: 2020-10-13T09:10:22.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T14:58:01.000Z (about 2 years ago)
- Last Synced: 2024-05-15T23:13:55.606Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 9.77 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
pgconnstr
=========
A Python module for parsing and manipulating PostgreSQL libpq style connection strings and URIs.
[](https://badge.fury.io/py/pgconnstr)
[](https://pypi.python.org/pypi/pgconnstr/)
[](https://github.com/canonical/pgconnstr/blob/master/LICENSE)
[](https://github.com/canonical/pgconnstr/actions?query=workflow%3ATests)
License
-------
LGPLv3. See the file `LICENSE` for details.
class ConnectionString
----------------------
pgconnstr.ConnectionString represents a libpq connection string.
```python console
>>> from pgconnstr import ConnectionString
>>> c = ConnectionString(host='1.2.3.4', dbname='mydb', port=5432, user='anon',
... password="sec'ret", application_name='myapp')
...
>>> print(str(c))
application_name=myapp dbname=mydb host=1.2.3.4 password=sec\'ret port=5432 user=anon
>>> print(str(ConnectionString(str(c), dbname='otherdb')))
application_name=myapp dbname=otherdb host=1.2.3.4 password=sec\'ret port=5432 user=anon
```
Components may be accessed as attributes.
```python console
>>> c.dbname
'mydb'
>>> c.host
'1.2.3.4'
>>> c.port
'5432'
```
Standard components will default to None if not explicitly set. See
https://www.postgresql.org/docs/12/libpq-connect.html#LIBPQ-PARAMKEYWORDS
for the list of standard keywords.
```python console
>>> c.connect_timeout is None
True
```
The standard URI format is also accessible:
```python console
>>> print(c.uri)
postgresql://anon:sec%27ret@1.2.3.4:5432/mydb?application_name=myapp
>>> print(ConnectionString(c, host='2001:db8::1234').uri)
postgresql://anon:sec%27ret@[2001:db8::1234]:5432/mydb?application_name=myapp
```