Como preparar e executar uma única instrução SQL em Python
Antes de iniciar
Obtenha um recurso de conexão chamando uma das funções de conexão na API do ibm_db. Para obter mais informações, consulte Conectando a um servidor de banco de dados IBM em Python.
Procedimento
- Conexão
- Um recurso de conexão com o banco de dados válido que é retornado da função ibm_db.connect ou ibm_db.pconnect .
- instrução
- Uma string que contém a instrução SQL. Esta string pode incluir uma expressão XQuery que é chamada pela função XMLQUERY.
- opções
- Opcional: Um dicionário que especifica o tipo de cursor a retornar para conjuntos de resultados. Você pode usar este parâmetro para solicitar um cursor scrollable para servidores de banco de dados que suportam este tipo de cursor. Por padrão, um cursor de frente somente é retornado.
Se a chamada de função falhar (retornaFalse), é possível usar a função ibm_db.stmt_error ou ibm_db.stmt_errormsg para recuperar informações de diagnóstico sobre o erro.
Se a chamada de função for bem-sucedida, é possível usar a função ibm_db.num_rows para retornar o número de linhas que a instrução SQL retornou ou afetou. Se a instrução SQL retornar um conjunto de resultados, você poderá começar a buscar as linhas.
Para obter mais informações sobre a API ibm_db , consulte https://github.com/ibmdb/python-ibmdb/wiki/APIs.
Exemplo
Exemplo 1: Executar uma única instrução 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)Exemplo 2: Executar uma expressão 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)
O que fazer em seguida
Se a instrução SQL retornar um ou mais conjuntos de resultados, você poderá começar a buscar linhas a partir do recurso de instrução.