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()