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

util.py 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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
  6. http://www.postgresqltutorial.com/postgresql-python/connect/"""
  7. # create a parser
  8. parser = ConfigParser()
  9. # read config file
  10. parser.read(filename)
  11. # get section, default to postgresql
  12. db = {}
  13. if parser.has_section(section):
  14. params = parser.items(section)
  15. for param in params:
  16. db[param[0]] = param[1]
  17. else:
  18. raise Exception(
  19. 'Section {0} not found in the {1} file'.format(section, filename))
  20. return db
  21. def getQuery(query, qparams=[]):
  22. """
  23. Get single query
  24. """
  25. conn = False
  26. try:
  27. params = config()
  28. print("Connecting to database")
  29. conn = pg.connect(**params)
  30. cur = conn.cursor()
  31. # Get table
  32. dataframe = psql.read_sql(query, conn, params=qparams)
  33. cur.close()
  34. print("Table recieved")
  35. return dataframe
  36. except (Exception, pg.DatabaseError) as error:
  37. print(error)
  38. return None
  39. finally:
  40. if conn is not False:
  41. conn.close()
  42. print('Database connection closed')
  43. def pickleQuery(query, path, qparams=[]):
  44. dq = getQuery(query, qparams)
  45. dq.to_pickle(path)
  46. print("Table pickled")
  47. if __name__ == "__main__":
  48. dv = getQuery('SELECT version()').version[0]
  49. print('PostgreSQL database version:')
  50. print(dv)