Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cStringIO as StringIO
- import csv
- import getpass
- import pg8000
- import web
- urls = (('/(.*)', 'Hello'))
- web.config.debug = False
- class Hello:
- def connect(self):
- params = web.input()
- try:
- params.host
- except AttributeError:
- params.host = ''
- try:
- params.user
- except AttributeError:
- params.user = getpass.getuser()
- try:
- params.password
- except AttributeError:
- params.password = ''
- try:
- params.db
- except AttributeError:
- params.db = params.user
- self.conn = pg8000.connect(host=params.host, user=params.user, password=params.password, database=params.db)
- def GET(self, stuff=None):
- try:
- self.conn
- except AttributeError:
- self.connect()
- params = web.input()
- cursor = self.conn.cursor()
- cursor.execute(params.query)
- out = StringIO.StringIO()
- writer = csv.writer(out)
- writer.writerows([r for r in cursor])
- return out.getvalue()
- def POST(self, stuff=None):
- try:
- self.conn
- except AttributeError:
- self.connect()
- params = web.input()
- cursor = self.conn.cursor()
- cursor.execute(params.query)
- self.conn.commit()
- web.ctx.status = '201 CREATED'
- def DELETE(self, record):
- params = web.input()
- try:
- self.conn
- except AttributeError:
- self.connect()
- cursor = self.conn.cursor()
- if not record:
- cursor.execute("DELETE FROM {}".format(params.table))
- else:
- cursor.execute("DELETE FROM {} WHERE id = %s".format(params.table), (record))
- self.conn.commit()
- web.ctx.status = '204 No Content'
- def HEAD(self, stuff=None):
- try:
- self.conn
- except AttributeError:
- self.connect()
- params = web.input()
- cursor = self.conn.cursor()
- cursor.execute(params.query)
- web.header('X-Query','{}'.format(params.query))
- web.header('X-Num', '{}'.format(len(list(cursor))))
- web.ctx.status = '200 OK'
- if __name__ == '__main__':
- app = web.application(urls, globals())
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement