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

conn = False

try:
    params = config()

    print("Connecting to database")

    conn = pg.connect(**params)

    cur = conn.cursor()

    print('PostgreSQL database version')

    cur.execute('SELECT version()')

    db_version = cur.fetchone()
    print(db_version)


    # Get tables
    dataframe = psql.read_sql("SELECT * FROM pg_catalog.pg_tables", conn)

    # Too big!
    # dataframe = psql.read_sql("SELECT * FROM coup_prd.coupdata_2016_06", conn)

    print(dataframe)

    cur.close()

except (Exception, pg.DatabaseError) as error:
    print(error)
finally:
    if conn is not False:
        conn.close()
        print('Database connection closed')
