Re: [cx-oracle-users] wrapping curs.execute() in another function?
Brought to you by:
atuining
From: Henning v. B. <H.v...@t-...> - 2006-12-07 08:30:47
|
Hi Mark, pls try the following script: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D #!/bin/env python # -*- coding: iso-8859-1 -*- # import cx_Oracle # Sample 1 def doAllCurs (curs, stmt, **args): rset =3D curs.execute (stmt, **args) for rec in curs: yield rec return # Sample 2 def doAllConn (conn, stmt, **args): curs =3D conn.cursor() for rec in doAllCurs(curs, stmt, **args): yield rec curs.close() return # Print All Records # This could perhaps be recoded in a more functional programming style def printAll (curs, stmt, **args): for rec in doAllCurs(curs, stmt, **args): print rec def test (uid, query, **bindvars): conn =3D cx_Oracle.connect(uid) curs =3D conn.cursor() printAll (curs, query, **bindvars) =20 print "" print "The first 20 records as a list:" print list (doAllCurs (curs, query, **bindvars))[:20] =20 curs.close() conn.close() # Test me if __name__ =3D=3D "__main__": import sys if len(sys.argv) > 1: uid =3D sys.argv[1] conditions =3D dict ([tuple(arg.split("=3D",1)) for arg in sys.argv[2:] ]) query =3D """ select object_name , object_type from user_objects where 1=3D1""" for nam,val in conditions.items(): query +=3D ("\n and %s =3D :%s" % (nam,nam)) print "Query:" print query print "*" * 70 print "Bind Vars:" for nam,val in conditions.items(): print "%-20s =3D %r" % (nam,val) print "*" * 70 test (uid, query, **conditions); else: print "Test me like this:" print "%s uid/pwd@dbs object_type=3DTABLE" % sys.argv[0] =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Just save it as test.py, then call it like test.py userid/password@database object_type=3DTABLE or, with other condiditons: test.py userid/password@database object_type=3DTABLE object_name=3DXYZ (This will probably not return any results) HTH Henning |