[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