Printing columns in a DB2 database
<p>I want to print all the columns of a table in a database in db2. This is the current code I have now for doing that.</p>

<pre><code>#!/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)
</code></pre>

<p>The results mostly look like this.</p>

<blockquote>
  <p>\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</p>
</blockquote>

<p>Can someone please help me out with this? Fairly new to this.</p>

<p>I think you have a problem of encodage format (Unicode possible)</p>

<p>->And if you try this query, have you the same result?:</p>

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

<p>->May be can you try this too:</p>

<pre><code>  ibm_db.exec_immediate(conn, sql).decode('cp-1251') 
</code></pre>

python database python-2.7 db2