Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. import configparser
  2. import psycopg2
  3. from collections import namedtuple
  4.  
  5. Person = namedtuple("Person", ["id", "name", "surname"])
  6. DatabaseConfig = namedtuple("Config", ["dbname", "user", "password", "host",
  7. "port"])
  8.  
  9.  
  10. class MyDatabase(object):
  11. _INSERT_QUERY_TEMPLATE = "INSERT INTO mytable (name, surname) VALUES (%s, %s)"
  12. _SELECT_QUERY = "SELECT id, name, surname FROM mytable"
  13. _UPDATE_QUERY_TEMPLATE = "UPDATE mytable SET surname = %s WHERE name = %s)"
  14. _DELETE_QUERY_TEMPLATE = "DELETE FROM mytable WHERE name = %s"
  15.  
  16. def __init__(self, config):
  17. self._config = config
  18.  
  19. def _GetConnection(self):
  20. return psycopg2.connect(*self._config)
  21.  
  22. # Better to be more specific, like: InsertUser, or InsertPerson. Depends on
  23. # the table you insert into.
  24. def InsertValues(self, name, surname):
  25. try:
  26. with self._GetConnection() as conn:
  27. cur = conn.cursor()
  28. query = cur.mogrify(MyDatabase._INSERT_QUERY_TEMPLATE, (name, surname))
  29. cur.execute(query)
  30. except Exception, e:
  31. print "Failed to insert values:", name, surname
  32. print e
  33.  
  34. def GetAllValues(self):
  35. try:
  36. with self._GetConnection() as conn:
  37. cur = conn.cursor()
  38. cur.execute(MyDatabase._SELECT_QUERY)
  39. return map(Person._make, cur.fetchall())
  40. except Exception, e:
  41. print "Failed to get values.", e
  42.  
  43. def UpdateSurnameByName(self, name, surname):
  44. try:
  45. with self._GetConnection() as conn:
  46. cur = conn.cursor()
  47. query = cur.mogrify(MyDatabase._UPDATE_QUERY_TEMPLATE, surname, name)
  48. cur.execute(query)
  49. except Exception, e:
  50. print "Failed to update values:", name, surname
  51. print e
  52.  
  53. def DeleteValuesByName(self, name):
  54. try:
  55. with self._GetConnection() as conn:
  56. cur = conn.cursor()
  57. query = cur.mogrify(MyDatabase._DELETE_QUERY_TEMPLATE, name)
  58. cur.execute(query)
  59. except Exception, e:
  60. print "Failed to delete values with name =", name
  61. print e
  62.  
  63.  
  64. def printValues(values):
  65. for value in values:
  66. print value
  67.  
  68.  
  69. def main():
  70. # TODO: read configuration with ini parser.
  71. config = DatabaseConfig(dbname="postgres", user="postgres",
  72. password="success", host="127.0.0.1", port=5432)
  73. db = MyDatabase(config)
  74. db.InsertValues(name='John', surname='McRead')
  75. printValues(db.GetAllValues())
  76.  
  77. db.UpdateSurnameByName(name='John', surname='McDonald')
  78. printValues(db.GetAllValues())
  79.  
  80. db.DeleteValuesByName('John')
  81. printValues(db.GetAllValues())
  82.  
  83.  
  84. if __name__ == "__main__":
  85. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement