Home Page  >>>  Free Your Mind  >>>  Python

Registrati su TheZion
Password Persa




Utilizzare ADO in Python by neo

Utilizzare gli Active X data objects con Python è molto semplice.
Per chi ha gia pratica del loro utilizzo nelle ASP, o in Windows Scripting Host la cosa presenterà difficoltà minime.

Il funzionamento ovviamente sarà garantito solo sulla piattaforma Win32 poiché questa è una tecnologia Microsoft.

Prima di operare ecco cosa è necessario avere.


Il codice che estrae i dati e li stampa nella interactive window, da una ipotetica tabella miaTab è il seguente

import win32com.client
dataconn=win32com.client.Dispatch('adodb.connection')
rs=win32com.client.Dispatch('adodb.recordset')
strConn="Provider = Microsoft.Jet.OLEDB.4.0;Data Source=prova.mdb"
dataconn.Open (strConn)
sql="select * from miaTab ;"
rs.Open(sql, dataconn)
while not rs.eof:
    a=rs.Fields("test").Value

    print a.encode("latin1")
    rs.MoveNext() 

del rs
del dataconn

Analizziamo lo script in dettaglio.

La prima riga serve ad importare il modulo client della libreria win32 che implementa l'interfaccia COM per Python.

Nella seconda riga viene istanziata la connessione ADO attraverso il metodo Dispatch del client win32com, e nella terza allo stesso modo si crea un'istanza dell'adodb.recordset.
Successivamente (come per le normali connessioni in ASP o WSH), si apre la connessione (in questo caso una OLEDb verso un database di Access) e si stampa a schermo il valore del campo "test" del recordset.

Una piccola attenzione riguarda l'assegnazione del valore del campo "test" alla variabile a.
Infatti se non si specifica che si sta passando il Value del campo, il Python memorizzerà nella variabile a un puntatore al recordset e questo manderà in crash inesorabilmente lo script nel momento in cui, stampando a schermo il risultato dell'interrogazione del Database, faremo l'encoding in latin1 (operazione necessaria per la gestione dei caratteri unicode in Python.

Le ultime due righe servono solo a cancellare le istanze dalla memoria e liberare risorse.
Affinchè il tutto funzioni (poiché il Python individua i costrutti logici per indentazione) è fondamentale che le tabulazioni siano precise.



Leggi commenti

Numero commenti inviati: 0