Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import configparser
- import psycopg2
- from collections import namedtuple
- Person = namedtuple("Person", ["id", "name", "surname"])
- DatabaseConfig = namedtuple("Config", ["dbname", "user", "password", "host",
- "port"])
- class MyDatabase(object):
- _INSERT_QUERY_TEMPLATE = "INSERT INTO mytable (name, surname) VALUES (%s, %s)"
- _SELECT_QUERY = "SELECT id, name, surname FROM mytable"
- _UPDATE_QUERY_TEMPLATE = "UPDATE mytable SET surname = %s WHERE name = %s)"
- _DELETE_QUERY_TEMPLATE = "DELETE FROM mytable WHERE name = %s"
- def __init__(self, config):
- self._config = config
- def _GetConnection(self):
- return psycopg2.connect(*self._config)
- # Better to be more specific, like: InsertUser, or InsertPerson. Depends on
- # the table you insert into.
- def InsertValues(self, name, surname):
- try:
- with self._GetConnection() as conn:
- cur = conn.cursor()
- query = cur.mogrify(MyDatabase._INSERT_QUERY_TEMPLATE, (name, surname))
- cur.execute(query)
- except Exception, e:
- print "Failed to insert values:", name, surname
- print e
- def GetAllValues(self):
- try:
- with self._GetConnection() as conn:
- cur = conn.cursor()
- cur.execute(MyDatabase._SELECT_QUERY)
- return map(Person._make, cur.fetchall())
- except Exception, e:
- print "Failed to get values.", e
- def UpdateSurnameByName(self, name, surname):
- try:
- with self._GetConnection() as conn:
- cur = conn.cursor()
- query = cur.mogrify(MyDatabase._UPDATE_QUERY_TEMPLATE, surname, name)
- cur.execute(query)
- except Exception, e:
- print "Failed to update values:", name, surname
- print e
- def DeleteValuesByName(self, name):
- try:
- with self._GetConnection() as conn:
- cur = conn.cursor()
- query = cur.mogrify(MyDatabase._DELETE_QUERY_TEMPLATE, name)
- cur.execute(query)
- except Exception, e:
- print "Failed to delete values with name =", name
- print e
- def printValues(values):
- for value in values:
- print value
- def main():
- # TODO: read configuration with ini parser.
- config = DatabaseConfig(dbname="postgres", user="postgres",
- password="success", host="127.0.0.1", port=5432)
- db = MyDatabase(config)
- db.InsertValues(name='John', surname='McRead')
- printValues(db.GetAllValues())
- db.UpdateSurnameByName(name='John', surname='McDonald')
- printValues(db.GetAllValues())
- db.DeleteValuesByName('John')
- printValues(db.GetAllValues())
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement