Skip to content
Snippets Groups Projects
Commit 450a99fc920e authored by Jean-Francois Pieronne's avatar Jean-Francois Pieronne
Browse files

Returns array of rows

parent 31acc4628a12
No related branches found
No related tags found
1 merge request!4Returns array of rows
......@@ -2,9 +2,8 @@
#!/usr/bin/env python
#
# For request like:
# http://server/rmqplus/?FirstField=for&SecondField=this
# return value:firstfield + ' ' + secondfield, status:1
# in the upper request: "for this"
# http://server/rmqplus/?reqid=2&empid=00416
# return result of the Rdb request associated
# Any error: return status:0
#
import pika
......@@ -15,9 +14,37 @@
import datetime
import rdb
class Request(object):
request = {}
colnames = {}
def __init__(self, reqid, request):
self._request = rdb.Statement(request)
self._colnames = None
Request.request[reqid] = self
Request.colnames[reqid] = None
def execute(self, *args):
self._request.execute(*args)
if self._colnames is None:
self._colnames = [x[0] for x in self._request.description()]
def description(self):
return self._request.description()
def fetchall(self):
res = self._request.fetchall()
lst = []
for r in res:
d = dict()
for n,v in zip(self._colnames, r):
d[n] = str(v) if isinstance(v, datetime.datetime) else v
lst.append(d)
return lst
def close(self):
return self._request.close()
host = sys.argv[1]
user = sys.argv[2]
pwd = sys.argv[3]
dbname = sys.argv[4]
rdb.attachDB(dbname)
......@@ -18,15 +45,12 @@
host = sys.argv[1]
user = sys.argv[2]
pwd = sys.argv[3]
dbname = sys.argv[4]
rdb.attachDB(dbname)
request = {}
colnames = {}
request['1'] = rdb.Statement('select * from EMPLOYEES where EMPLOYEE_ID = ?')
request['2'] = rdb.Statement('select * from CURRENT_INFO where ID = ?')
colnames['1'] = None
colnames['2'] = None
Request('1', 'select * from EMPLOYEES where EMPLOYEE_ID = ?')
Request('2', 'select * from CURRENT_INFO where ID = ?')
Request('3', 'select * from JOBS')
credentials = pika.PlainCredentials(user, pwd)
connection = pika.BlockingConnection(
......@@ -38,9 +62,8 @@
def rdb_request(din):
global request, colnames
status = 1
try:
reqid = din['FORM_REQID']
empid = din['FORM_EMPID']
rdb.read_only()
......@@ -42,11 +65,11 @@
status = 1
try:
reqid = din['FORM_REQID']
empid = din['FORM_EMPID']
rdb.read_only()
request[reqid].execute(empid)
if colnames[reqid] is None:
colnames[reqid] = [x[0] for x in request[reqid].description()]
r = request[reqid].fetchall()
if len(r) == 0:
if reqid in ('1', '2'):
Request.request[reqid].execute(empid)
else:
Request.request[reqid].execute()
res = Request.request[reqid].fetchall()
rdb.commit()
......@@ -52,10 +75,5 @@
rdb.commit()
return 1, {}
d = dict()
for n,v in zip(colnames[reqid], r[0]):
d[n] = str(v) if isinstance(v, datetime.datetime) else v
rdb.commit()
return 1, d
return 1, res
except Exception, e:
print 'except'
print e
......@@ -59,5 +77,4 @@
except Exception, e:
print 'except'
print e
pass
try:
......@@ -63,8 +80,8 @@
try:
request.close()
Request.request[reqid].close()
except:
pass
try:
rdb.rollback()
except:
pass
......@@ -65,10 +82,11 @@
except:
pass
try:
rdb.rollback()
except:
pass
return 0, {}
return 0, []
def execute(din, dout):
try:
......@@ -77,6 +95,7 @@
dout['status'] = 0
dout['value'] = {}
def on_request(ch, method, props, body):
st = time.time()
# print "\nReceived '%s'" % (body,)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment