Psycopg2 - Connect to postgreSQL database using a connection string

I currently have a connection string in the format of:

"localhost://username:password@data_quality:5432"

What is the best method of using this to connect to my database using psycopg2?

eg: connection = psycopg2.connect(connection_string)

Thanks,

2 Answers

You could make use of urlparse, creating a dictionary that matches psycopg's connection arguments:

import psycopg2
from urllib.parse import urlparse
conStr = "localhost://username:password@data_quality:5432"
p = urlparse(conStr)
pg_connection_dict = { 'dbname': p.hostname, 'user': p.username, 'password': p.password, 'port': p.port, 'host': p.scheme
}
print(pg_connection_dict)
con = psycopg2.connect(**pg_connection_dict)
print(con)

Out:

{'dbname': 'data_quality', 'user': 'username', 'password': 'password', 'port': 5432, 'host': 'localhost'}
<connection object at 0x105f58190; dsn: 'user=xxx password=xxx dbname=xxx host=xxx port=xxx', closed: 0>

Documentation for pyscopg2 connect is here. Following their syntax you connect like this:

connection = psycopg2.connect(host='localhost', user='<username>', password='<password>', dbname='data_quality', port=5432)

If you are using Windows, it can be stupid about resolving localhost if you don't have a network connection. You can get around this by instead using '127.0.0.1' for host

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like