Repository for Petra's work at ampli Jan-Feb 2019

util.py 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import psycopg2 as pg
  2. from configparser import ConfigParser
  3. import pandas.io.sql as psql
  4. def config(filename='database.ini', section='postgresql'):
  5. """Config parser from http://www.postgresqltutorial.com/postgresql-python/connect/"""
  6. # create a parser
  7. parser = ConfigParser()
  8. # read config file
  9. parser.read(filename)
  10. # get section, default to postgresql
  11. db = {}
  12. if parser.has_section(section):
  13. params = parser.items(section)
  14. for param in params:
  15. db[param[0]] = param[1]
  16. else:
  17. raise Exception('Section {0} not found in the {1} file'.format(section, filename))
  18. return db
  19. def getQuery(query, qparams = []):
  20. """
  21. Get single query
  22. """
  23. conn = False
  24. try:
  25. params = config()
  26. print("Connecting to database")
  27. conn = pg.connect(**params)
  28. cur = conn.cursor()
  29. # Get table
  30. dataframe = psql.read_sql(query, conn, params = qparams)
  31. cur.close()
  32. return dataframe
  33. except (Exception, pg.DatabaseError) as error:
  34. print(error)
  35. return None
  36. finally:
  37. if conn is not False:
  38. conn.close()
  39. print('Database connection closed')
  40. if __name__ == "__main__":
  41. dv = getQuery('SELECT version()').version[0]
  42. print('PostgreSQL database version:')
  43. print(dv)