Como preparar e executar uma única instrução SQL em Python

Para preparar e executar uma única instrução SQL, use a função ibm_db.exec_immediate . Para evitar a ameaça de segurança de ataques de injeção de SQL, use a função ibm_db.exec_immediate apenas para executar instruções SQL compostas de sequências estáticas. Interpolação de variáveis Python representando a entrada do usuário na instrução SQL pode expor sua aplicação a ataques de injeção SQL.

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

Para preparar e executar uma única instrução SQL, chame a função ibm_db.exec_immediate , passando os argumentos listados:
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.