Factoring connection details into a package¶
You will want to avoid having your password and connection details strewn over
several notebooks. If you or your colleages are connecting to the same database
in a project, you can write a helper module that abstracts the connection
details. Thus, the connection details are centralized in a single location.
Start by creating a directory (let’s call it
database) in the project
workspace, and populate it with a
# /project/database/setup.py from setuptools import setup setup(name='database', version='0.1', py_modules=['database'])
Then, create another file called
database.py (the name name needs to match
the name of the
py_modules entry above, plus the
# /project/database/database.py import psycopg2 def connect(): connection = psycopg2.connect( host='customers.cpllpj7t12adb.mydomain.com', # host on which the database is running database='database_name', # name of the database to connect to user='username', # username to connect with password='password' # password associated with your username ) return connection
A user can then install the
database package in a server by running:
$ cd /project/database $ pip install -e .
They can then use the
connect function anywhere within their server:
import pandas from database import connect with connect() as conn: df = pandas.read_sql('SELECT * FROM customers LIMIT 4') print(df)
The above example uses psycopg2 to connect to a PostgreSQL database, but the same strategy can be used to centralize connection details for other database types.