[python-win32] How can improvement time of response of Python cx_Oracle
Mauricio Martinez Garcia
morfeokmg at gmail.com
Thu Jun 3 19:50:18 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi.
This is my code for Oracle Connection with python and cx_Oracle.
How can improvement time of response?.
#==========================================================
#Este metodo crea una conexion a oracle
def creaConexion(self,v_user, v_passwd, v_schema):
rowsSchema = v_schema.split(",")
v_server = str(rowsSchema[0])
v_port = int(rowsSchema[1])
v_sid = str(rowsSchema[2])
dsn = cx_Oracle.makedsn(v_server, v_port, v_sid)
try:
connection = cx_Oracle.connect(v_user, v_passwd,dsn)
return connection
except cx_Oracle.DatabaseError, exc:
error, = exc.args
print >> sys.stderr, XP_ERROR+"Oracle-Error-Code:",
error.code
print >> sys.stderr, XP_ERROR+"Oracle-Error-Message:",
error.message
sys.exit(1)
#metodo que ejecuta un query en oracle
def ejecutaQuery(self, query, conn):
cursor = conn.cursor()
cursor.arraysize = 10000
try:
cursor.parse(query)
cursor.execute(query)
cursorReturn = cursor.fetchall()
return cursorReturn
except cx_Oracle.DatabaseError, exc:
error, = exc.args
print >> sys.stderr, XP_ERROR+"Oracle-Error-Code:", error.code
print >> sys.stderr, XP_ERROR+"Oracle-Error-Message:",
error.message
print query
sys.exit(1)
#==========================================================
The time for an comparation of 2 DBs are many.
Python: 1 - 2 mins by rows.
Java 0.02 - 0.10 secs by rows.
my code for comparation
#============================================================
n = 1
iniciaconexionBSCS = OracleConnections()
iniciaconexionATS = OracleConnections()
#Realizamos la conexion a oracle.
conn = iniciaconexionBSCS.creaConexion(usrBSCS, pasBSCS, 'BSCSP')
conn2 = iniciaconexionATS.creaConexion(usrATS, passATS,
'ATSP')
for rows in tuplaTotal:
BODY_SQL_BSCS = TMPLT_BSCS % (rows.telefono)
BODY_SQL_ATS = TMPLT_ATS % (rows.telefono)
error_co_id = '0'
error_ciclo = '0'
error_pt = '0'
error_status = '0'
error_activacion = '0'
error_saldo = '0'
#print BODY_SQL_BSCS
#print BODY_SQL_ATS
ejecBSCS = iniciaconexionBSCS.ejecutaQuery(BODY_SQL_BSCS,
conn)
ejecATS = iniciaconexionATS.ejecutaQuery(BODY_SQL_ATS, conn2)
for rowsBSCS in ejecBSCS:
for rowsATS in ejecATS:
#Ejemplos de salida
#BS (3404, 7956771, '5546037825', '10', 'a', 'CCT116')
#AT ('7956771', '5546037825', '334010011470558',
'10', 'a', 'CCT116', 'AC', 0, 335.35000000000002, 0)
if ((str(rowsBSCS[2]) == str(rowsATS[1])) and
((int(rowsBSCS[1]) <> int(rowsATS[0])) or (str(rowsBSCS[3]) <>
str(rowsATS[3])) or (str(rowsBSCS[4]) <> str(rowsATS[4])) or
(str(rowsBSCS[5]) <> str(rowsATS[5])) or (str(rowsATS[6]) == 'CR') or
(rowsATS[7] < 0) or (rowsATS[8] < 0) or (rowsATS[9] < 0))):
print 'DN Con error: '+rows.telefono
if (int(rowsBSCS[1]) <> int(rowsATS[0])):
error_co_id = '1'
elif (str(rowsBSCS[3]) <> str(rowsATS[3])):
error_ciclo = '1'
elif (str(rowsBSCS[4]) <> str(rowsATS[4])):
error_status = '1'
elif (str(rowsBSCS[5]) <> str(rowsATS[5])):
error_pt = '1'
elif (str(rowsATS[6]) == 'CR'):
error_activacion = '1'
elif ((rowsATS[7] < 0) or (rowsATS[8] < 0) or
(rowsATS[9] < 0)):
error_saldo = '1'
DNIncorrecto =
str(rowsATS[1])+"|"+str(rowsBSCS[1])+"|"+str(rowsATS[0])+"|"+str(rowsBSCS[3])+"|"+str(rowsATS[3])+"|"+str(rowsBSCS[4])+"|"+str(rowsATS[4])+"|"+str(rowsBSCS[5])+"|"+str(rowsATS[5])+"|"+str(rowsATS[6])+"|"+str(rowsATS[7])+"|"+str(rowsATS[8])+"|"+str(rowsATS[9])+"|"+error_co_id+"|"+error_ciclo+"|"+error_status+"|"+error_pt+"|"+error_activacion+"|"+error_saldo+"|"+error_co_id+error_ciclo+error_status+error_pt+error_activacion+error_saldo
print str(n)+"--"+XP_LOG+DNIncorrecto
#n = n + 1
else:
DNCorrecto =
str(rowsATS[1])+"|"+str(rowsBSCS[1])+"|"+str(rowsATS[0])+"|"+str(rowsBSCS[3])+"|"+str(rowsATS[3])+"|"+str(rowsBSCS[4])+"|"+str(rowsATS[4])+"|"+str(rowsBSCS[5])+"|"+str(rowsATS[5])+"|"+str(rowsATS[6])+"|"+str(rowsATS[7])+"|"+str(rowsATS[8])+"|"+str(rowsATS[9])
print str(n)+"--"+XP_LOG+DNCorrecto
#n = n + 1
#print str(n), rows.telefono
n = n + 1
iniciaconexionBSCS.cierraConexion(conn)
iniciaconexionATS.cierraConexion(conn2)
#============================================================
I need improvement the time of response of 1 - 2 minutes to 0.02 -
0.10 secs. How can this?.
GREETINGS.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQIcBAEBAgAGBQJMB+tZAAoJEFWGNhWbCcUY5vIP/AlE7nTFzX+HkLPq3Lj6yj9s
6yFYRIlcJwX+QEa0PGPXDcJ/nJw5uqLNsKZW2v7R5zmeDmX7BSUx0nO57xju/sEB
PnRBYrqXBKd1GvJU46SUJi2ahQx7y37ctzjU9l2sdZ/74JrSWiW1L3Ip4DJnlohR
hgmS6PfTx4IvHb26Pn8Sxa5UGmL0OGVrW7b/U9BI+IAXjkXMnrmVQKbaInBIrE3m
ZGCwsySTjfSKEhH9ybOVhk4CZHkeRY2wKNv4YZ98++sSkrCFMhdnoPM0fMAsAEN2
sgQhZ9ziNCtpiyGmtL/QVkxeQhwNwpnixrkXf96FfzeVLESwf2117m3RcTntLWKC
ixvOOHV2gCF6YCf5UKucQEq8V/D1UgPliPU4pacBvq/5/Xq3zoJxOWxnHRZRiUtA
/UgGnhn+7vHvhiYTXJtJrI95i6YyR7mud0ZuWcc7pYGZ6kJ1toIZIgqeLxvK33u0
OrQUOf0n6j+JWS9DiJRrIMhhRPr8IX5pjGg6GfqfcQBKUcJuJnLzev57GFTQHcCl
S18lkASTykWV3SPdAc6mmAf2Pv/B2X8CFZk9Oc9kgnqYUVFyikCY4GRv7GCnMucQ
1yYoWT5nz/N9+6SeLkGGhS9nxWL/OJlepYR66shJR4J/1K1Qp5BERhOtLMX5f2kK
L8MNhHxT1IictTauhp0D
=wckT
-----END PGP SIGNATURE-----
More information about the python-win32
mailing list