change
This commit is contained in:
parent
13ed0dd15e
commit
ffa87bfd59
Binary file not shown.
@ -210,42 +210,52 @@ class DBPools:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
async def wrap_func(dbname,NS,callback,**kw):
|
async def wrap_func(dbname,NS,callback,**kw):
|
||||||
sor = await self.getSqlor(dbname)
|
sor = await self.getSqlor(dbname)
|
||||||
desc = func(dbname,NS,callback,**kw)
|
|
||||||
try:
|
try:
|
||||||
|
desc = func(dbname,NS,callback,**kw)
|
||||||
ret = await sor.runSQL(desc,NS,callback,**kw)
|
ret = await sor.runSQL(desc,NS,callback,**kw)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print('error:',e)
|
print('error:',e)
|
||||||
raise e
|
raise e
|
||||||
finally:
|
finally:
|
||||||
await self.freeSqlor(sor)
|
await self.freeSqlor(sor)
|
||||||
|
return ret
|
||||||
return wrap_func
|
return wrap_func
|
||||||
|
|
||||||
def runSQLPaging(self,func):
|
def runSQLPaging(self,func):
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
async def wrap_func(dbname,NS,**kw):
|
async def wrap_func(dbname,NS,**kw):
|
||||||
sor = await self.getSqlor(dbname)
|
sor = await self.getSqlor(dbname)
|
||||||
desc = func(dbname,NS,**kw)
|
try:
|
||||||
total = await sor.record_count(desc,NS)
|
desc = func(dbname,NS,**kw)
|
||||||
recs = await sor.pagingdata(desc,NS)
|
total = await sor.record_count(desc,NS)
|
||||||
data = {
|
recs = await sor.pagingdata(desc,NS)
|
||||||
"total":total,
|
data = {
|
||||||
"rows":recs
|
"total":total,
|
||||||
}
|
"rows":recs
|
||||||
print(len(recs),'records return')
|
}
|
||||||
await self.freeSqlor(sor)
|
print(len(recs),'records return')
|
||||||
return data
|
return data
|
||||||
|
except Exception as e:
|
||||||
|
print('error',e)
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
await self.freeSqlor(sor)
|
||||||
return wrap_func
|
return wrap_func
|
||||||
|
|
||||||
async def runSQLResultFields(self, dbname,NS,**kwargs):
|
def runSQLResultFields(self, func):
|
||||||
sor = self.getSqlor(dbname)
|
@wraps(func)
|
||||||
desc = func(dbname,NS,**kw)
|
async def wrap_func(dbname,NS,**kw):
|
||||||
conn = await self._aquireConn(dbname)
|
sor = await self.getSqlor(dbname)
|
||||||
async with conn.cursor() as cur:
|
try:
|
||||||
sor.setCursor(conn,cur)
|
desc = func(dbname,NS,**kw)
|
||||||
ret=await sor.sqlIterator(desc,NS)
|
ret = await sor.resultFields(desc,NS)
|
||||||
ret = [ {'name':i[0],'type':i[1]} for i in cur.description ]
|
|
||||||
return ret
|
return ret
|
||||||
await self._releaseConn(dbname,conn)
|
except Exception as e:
|
||||||
|
print('error=',e)
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
await self.freeSqlor(sor)
|
||||||
|
return wrap_func
|
||||||
|
|
||||||
async def getTables(self,dbname):
|
async def getTables(self,dbname):
|
||||||
@self.inSqlor
|
@self.inSqlor
|
||||||
|
10
sqlor/sor.py
10
sqlor/sor.py
@ -309,7 +309,7 @@ class SQLor(object):
|
|||||||
self.recs.append(rec)
|
self.recs.append(rec)
|
||||||
|
|
||||||
c = Cnt()
|
c = Cnt()
|
||||||
await self.sqlIterator(cnt_desc,NS,c.handler)
|
await self.runSQL(cnt_desc,NS,c.handler)
|
||||||
print(c.recs[0])
|
print(c.recs[0])
|
||||||
t = c.recs[0]['rcnt']
|
t = c.recs[0]['rcnt']
|
||||||
return t
|
return t
|
||||||
@ -341,9 +341,15 @@ class SQLor(object):
|
|||||||
self.recs.append(rec)
|
self.recs.append(rec)
|
||||||
|
|
||||||
c = Cnt()
|
c = Cnt()
|
||||||
await self.sqlIterator(paging_desc,NS,c.handler)
|
await self.runSQL(paging_desc,NS,c.handler)
|
||||||
return c.recs
|
return c.recs
|
||||||
|
|
||||||
|
async def resultFields(self,desc,NS):
|
||||||
|
NS.update(rows=1,page=1)
|
||||||
|
r = await self.pagingdata(desc,NS)
|
||||||
|
ret = [ {'name':i[0],'type':i[1]} for i in self.cur.description ]
|
||||||
|
return ret
|
||||||
|
|
||||||
async def runSQL(self,desc,NS,callback,**kw):
|
async def runSQL(self,desc,NS,callback,**kw):
|
||||||
class RecordHandler:
|
class RecordHandler:
|
||||||
def __init__(self,ns,name):
|
def __init__(self,ns,name):
|
||||||
|
14
test/test.py
14
test/test.py
@ -31,7 +31,7 @@ dbs={
|
|||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
pool = DBPools(dbs,loop=loop)
|
pool = DBPools(dbs,loop=loop)
|
||||||
|
|
||||||
async def testfunc():
|
async def testfunc1():
|
||||||
@pool.runSQL
|
@pool.runSQL
|
||||||
def sql(db,ns,callback):
|
def sql(db,ns,callback):
|
||||||
return {
|
return {
|
||||||
@ -39,4 +39,14 @@ async def testfunc():
|
|||||||
}
|
}
|
||||||
x = await sql('cfae',{},print)
|
x = await sql('cfae',{},print)
|
||||||
|
|
||||||
loop.run_until_complete(testfunc())
|
async def testfunc2():
|
||||||
|
@pool.runSQLResultFields
|
||||||
|
def sql(db,NS):
|
||||||
|
return {
|
||||||
|
"sql_string":"select * from product",
|
||||||
|
}
|
||||||
|
x = await sql('cfae',{})
|
||||||
|
print(x)
|
||||||
|
|
||||||
|
loop.run_until_complete(testfunc1())
|
||||||
|
loop.run_until_complete(testfunc2())
|
||||||
|
Loading…
Reference in New Issue
Block a user