import psycopg2 as pg from configparser import ConfigParser import pandas.io.sql as psql def config(filename='database.ini', section='postgresql'): """Config parser from http://www.postgresqltutorial.com/postgresql-python/connect/""" # create a parser parser = ConfigParser() # read config file parser.read(filename) # get section, default to postgresql db = {} if parser.has_section(section): params = parser.items(section) for param in params: db[param[0]] = param[1] else: raise Exception('Section {0} not found in the {1} file'.format(section, filename)) return db def getQuery(query, qparams = []): """ Get single query """ conn = False try: params = config() print("Connecting to database") conn = pg.connect(**params) cur = conn.cursor() # Get table dataframe = psql.read_sql(query, conn, params = qparams) cur.close() return dataframe except (Exception, pg.DatabaseError) as error: print(error) return None finally: if conn is not False: conn.close() print('Database connection closed') if __name__ == "__main__": dv = getQuery('SELECT version()').version[0] print('PostgreSQL database version:') print(dv)