Preparación y ejecución de una única sentencia de SQL en Python
Antes de empezar
Obtener un recurso de conexión invocando una de las funciones de conexión en la API ibm_db. Para obtener más información, consulte el apartado Conexión a un servidor de base de datos de IBM en Python.
Procedimiento
- conexión
- Un recurso de conexión de base de datos válido devuelto por la función ibm_db.connect o ibm_db.pconnect.
- sentencia
- Una serie que contiene la sentencia de SQL. Esta serie puede incluir una expresión XQuery a la que llama la función XMLQUERY.
- opciones
- Opcional: Un diccionario que especifica el tipo de cursor que debe devolverse para conjuntos de resultados. Puede utilizar este parámetro para solicitar un cursor desplazable para servidores de bases de datos que admitan este tipo de cursor. Por omisión, se devuelve un cursor de sólo avance.
Si la llamada de función falla (devuelve False), puede utilizar la función ibm_db.stmt_error o ibm_db.stmt_errormsg para recuperar información de diagnóstico sobre el error.
Si la llamada de función tiene éxito, puede utilizar la función ibm_db.num_rows para devolver el número de filas que la sentencia de SQL ha devuelto o a las que ha afectado. Si la sentencia de SQL devuelve un conjunto de resultados, puede empezar a captar las filas.
Para obtener más información sobre la API ibm_db, consulte http://code.google.com/p/ibm-db/wiki/APIs.
Ejemplo
Ejemplo 1: Ejecutar una única sentencia de SQL
import ibm_db
conn = ibm_db.connect("database","username","password")
stmt = ibm_db.exec_immediate(conn, "UPDATE employee SET bonus = '1000' WHERE job =
'MANAGER'")
print "Number of affected rows: ", ibm_db.num_rows(stmt)Ejemplo 2: Ejecutar una expresión XQuery
import ibm_db
conn = ibm_db.connect("database","username","password")
if conn:
sql = "SELECT XMLSERIALIZE(XMLQUERY('for $i in $t/address where
$i/city = \"Olathe\" return <zip>{$i/zip/text()}</zip>'
passing c.xmlcol as \"t\") AS CLOB(32k)) FROM xml_test c WHERE id = 1"
stmt = ibm_db.exec_immediate(conn, sql)
result = ibm_db.fetch_both(stmt)
while( result ):
print "Result from XMLSerialize and XMLQuery:", result[0]
result = ibm_db.fetch_both(stmt)
Qué hacer a continuación
Si la sentencia de SQL devuelve uno o varios conjuntos de resultados, puede empezar a captar filas del recurso de sentencia.