一、建连接:
''' 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)