2016-09-30 46 views
0

我想打印db2中數據庫中表的所有列。這是我現在正在執行的代碼。打印DB2數據庫中的列

#!/usr/bin/python 

import ibm_db 
from ibm_db import tables, fetch_assoc, exec_immediate 
conn = ibm_db.connect("DATABASE=DB;HOSTNAME=9.6.24.89;PORT=50000;PROTOCOL=TCPIP;UID=R1990;PWD=secret;", "", "") 


def results(command): 
    ret = [] 
    result = fetch_assoc(command) 
    while result: 
     # This builds a list in memory. Theoretically, if there's a lot of rows, 
     # we could run out of memory. In practice, I've never had that happen. 
     # If it's ever a problem, you could use 
     #  yield result 
     # Then this function would become a generator. You lose the ability to access 
     # results by index or slice them or whatever, but you retain 
     # the ability to iterate on them. 
     ret.append(result) 
     result = fetch_assoc(command) 
    return ret # Ditch this line if you choose to use a generator. 


t = results(tables(conn)) 
sql = "SELECT * FROM SYSIBM.SYSTABLES WHERE type = 'T' AND name= 'Tables' " # Using our list of tables t from before... 
stmt = ibm_db.exec_immediate(conn, sql) 
tuple = ibm_db.fetch_both(stmt) 
count = 0 
while tuple != False: 
    print tuple 
    tuple = ibm_db.fetch_tuple(stmt) 

結果大多是這樣的。

\ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ X0F \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X01 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X0F \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X10 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X80 \ XBF \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ x00 \ x00 \ x00

有人能幫我解決這個問題嗎?這是相當新的。

回答

0

我認爲你有encodage格式(Unicode的可能)問題

- >如果你嘗試此查詢,你有同樣的結果?:

SELECT cast(TABLE_NAME as varchar(255) ccsid 1147) TABLE_NAME FROM SYSIBM.SYSTABLES WHERE type = 'T' AND name= 'Tables' 

- >可能是你能試試這個吧:

ibm_db.exec_immediate(conn, sql).decode('cp-1251')