Skip to content

Instantly share code, notes, and snippets.

@arnehuang
Last active May 25, 2018 17:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arnehuang/f24ff62194dc766f1558e129ca48796b to your computer and use it in GitHub Desktop.
Save arnehuang/f24ff62194dc766f1558e129ca48796b to your computer and use it in GitHub Desktop.
psycopg2 postgres python3 connect to database and execute query
import psycopg2.extras
import os
def connect_db(autocommit=False):
""" Connects to a data base and returns a connection and a cursor. """
conn = psycopg2.connect(
database=os.environ.get('DATABASE_DBNAME'),
user=os.environ.get('DATABASE_USERNAME'),
host=os.environ.get('DATABASE_HOST'),
password=os.environ.get('DATABASE_PASSWORD')
)
conn.autocommit = autocommit
cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
return {'conn': conn, 'cursor': cursor}
def execute_query(a_query, autocommit=True):
""" Executes a query, printing out rows returned if any, returning the results, the connection and the cursor. """
db = connect_db(autocommit=autocommit)
conn, cursor = db.get('conn'), db.get('cursor')
cursor.execute(a_query)
result = cursor.fetchall()
if result:
print(len(result), "records fetched")
return {'result':result, 'conn':conn, 'cursor':cursor}
if if __name__ == '__main__':
q = """ Select * from table limit 1 """
res = execute_query(q)
print(res)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment