Python操作db2

一、建连接:

'''
ibm_db.connect() #非持久性连接
ibm_db.pconnect()  #持久性连接,提升性能,连接不关闭
'''
import ibm_db
conn = ibm_db.connect("dsn=name","username","password")
#连接cataloged或非cataloged数据库
ibm_db.connect("DATABASE=name;HOSTNAME=host;PORT=60000;PROTOCOL=TCPIP;UID=username;
                PWD=password;", "", "")

二、执行SQL:

不带参数的

'''
string可以为XQuery表达式,用XMLQuery包装的
如果将用户输入作为SQL变量,可能受到SQL注入攻击
返回的是cursor类型,调用 ibm_db.num_rows()可以得到影响的数据行数
如果执行错误,可通过ibm_db.stmt_error() 或 ibm_db.stmt_errormsg()得到错误信息
'''
import ibm_db
conn = ibm_db.connect("dsn=name","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)
# XQuery
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)

猜你喜欢

转载自www.cnblogs.com/staff/p/10021981.html
db2