def run_test_158(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "SELECT * FROM staff WHERE id < 50")
    
    output = ''
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      output += str(row['ID']) + ', ' + row['NAME'] + ', ' + str(row['DEPT']) + ', ' + row['JOB'] + ', ' + str(row['YEARS']) + ', ' + str(row['SALARY']) + ', ' + str(row['COMM'])
      row = ibm_db.fetch_assoc(result)
      
    result2 = ibm_db.exec_immediate(conn,"SELECT * FROM department WHERE substr(deptno,1,1) in ('A','B','C','D','E')")
    row2 = ibm_db.fetch_assoc(result2)
    while ( row2 ):
        if (row2['MGRNO'] == None): 
            row2['MGRNO'] = ''
        if (row2['LOCATION'] == None): 
            row2['LOCATION'] = ''
        output += str(row2['DEPTNO']) + ', ' + row2['DEPTNAME'] + ', ' + str(row2['MGRNO']) + ', ' + row2['ADMRDEPT'] + ', ' + row2['LOCATION']
        row2 = ibm_db.fetch_assoc(result2)
    
    result3 = ibm_db.exec_immediate(conn,"SELECT * FROM employee WHERE lastname IN ('HAAS','THOMPSON', 'KWAN', 'GEYER', 'STERN', 'PULASKI', 'HENDERSON', 'SPENSER', 'LUCCHESSI', 'OCONNELL', 'QUINTANA', 'NICHOLLS', 'ADAMSON', 'PIANKA', 'YOSHIMURA', 'SCOUTTEN', 'WALKER', 'BROWN', 'JONES', 'LUTZ', 'JEFFERSON', 'MARINO', 'SMITH', 'JOHNSON', 'PEREZ', 'SCHNEIDER', 'PARKER', 'SMITH', 'SETRIGHT', 'MEHTA', 'LEE', 'GOUNOT')")
    row3 = ibm_db.fetch_tuple(result3)
    while ( row3 ):
        output += row3[0] + ', ' + row3[3] + ', ' + row3[5]
        row3=ibm_db.fetch_tuple(result3)
    print(output)
    def run_test_156(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 0)

        result = ibm_db.exec_immediate(conn, "select * from staff")

        row = ibm_db.fetch_assoc(result)
        count = 1
        while (row):
            if (row['YEARS'] == None):
                row['YEARS'] = ''
            if (row['COMM'] == None):
                row['COMM'] = ''
            print row['ID'], row['NAME'], row['JOB'], row['YEARS'], row[
                'SALARY'], row['COMM']
            row = ibm_db.fetch_assoc(result)

        result2 = ibm_db.exec_immediate(
            conn,
            "select * from department where substr(deptno,1,1) in ('A','B','C','D','E')"
        )
        row2 = ibm_db.fetch_assoc(result2)
        while (row2):
            if (row2['MGRNO'] == None):
                row2['MGRNO'] = ''
            print row2['DEPTNO'], row2['DEPTNAME'], row2['MGRNO'], row2[
                'ADMRDEPT'], row2['LOCATION']
            row2 = ibm_db.fetch_assoc(result2)
  def run_test_150(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)
    
    result = ibm_db.exec_immediate(conn, "select * from staff")

    row = ibm_db.fetch_assoc(result)    
    while ( row ):
      #print "%5d  " % row['ID']
      #print "%-10s " % row['NAME']
      #print "%5d " % row['DEPT']
      #print "%-7s " % row['JOB']
      #print "%5d " % row['YEARS']
      #print "%15s " % row['SALARY']
      #print "%10s " % row['COMM']
      if (row['YEARS'] == None):
        row['YEARS'] = 0
      if (row['COMM'] == None):
        row['COMM'] = ''
      print "%5d  %-10s %5d %-7s %5s %15s %10s " % (row['ID'], row['NAME'], row['DEPT'], row['JOB'], row['YEARS'], row['SALARY'], row['COMM'])
      row = ibm_db.fetch_assoc(result)
    def run_test_150(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from staff")

        row = ibm_db.fetch_assoc(result)
        while (row):
            #print "%5d  " % row['ID']
            #print "%-10s " % row['NAME']
            #print "%5d " % row['DEPT']
            #print "%-7s " % row['JOB']
            #print "%5d " % row['YEARS']
            #print "%15s " % row['SALARY']
            #print "%10s " % row['COMM']
            if (row['YEARS'] == None):
                row['YEARS'] = 0
            if (row['COMM'] == None):
                row['COMM'] = ''
            print("%5d  %-10s %5d %-7s %5s %15s %10s " %
                  (row['ID'], row['NAME'], row['DEPT'], row['JOB'],
                   row['YEARS'], row['SALARY'], row['COMM']))
            row = ibm_db.fetch_assoc(result)
    def run_test_162(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(
            conn, "select * from emp_act order by projno")
        row = ibm_db.fetch_both(result)
        # will only retrieve 10 records
        count = 1
        while (row):
            print(
                "Record ", count, ": %6s  %-6s %3d %9s %10s %10s %6s " %
                (row[0], row[1], row[2], row['EMPTIME'], row['EMSTDATE'],
                 row['EMENDATE'], row[0]))

            result2 = ibm_db.exec_immediate(
                conn, "select * from employee where employee.empno='" +
                row['EMPNO'] + "'")
            row2 = ibm_db.fetch_both(result2)
            if row2:
                print(">>%s,%s,%s,%s,%s,%s,%s" %
                      (row2['EMPNO'], row2['FIRSTNME'], row2['MIDINIT'],
                       row2[3], row2[3], row2[5], row2[6]))
            count = count + 1
            if (count > 10):
                break
            row = ibm_db.fetch_both(result)
    def run_test_156(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info( conn )
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from staff")

        row = ibm_db.fetch_assoc(result)
        count = 1
        while ( row ):
            if (row['YEARS'] == None):
                row['YEARS'] = ''
            if (row['COMM'] == None):
                row['COMM'] = ''
            print(row['ID'],row['NAME'],row['JOB'],row['YEARS'], row['SALARY'], row['COMM'])
            row = ibm_db.fetch_assoc(result)

        result2 = ibm_db.exec_immediate(conn,"select * from department where substr(deptno,1,1) in ('A','B','C','D','E')")
        row2 = ibm_db.fetch_assoc(result2)
        while ( row2 ):
            if (row2['MGRNO'] == None):
                row2['MGRNO'] = ''
            print(row2['DEPTNO'], row2['DEPTNAME'], row2['MGRNO'], row2['ADMRDEPT'], row2['LOCATION'])
            row2 = ibm_db.fetch_assoc(result2)
  def run_test_158(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "SELECT * FROM staff WHERE id < 50")
    
    output = ''
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      output += str(row['ID']) + ', ' + row['NAME'] + ', ' + str(row['DEPT']) + ', ' + row['JOB'] + ', ' + str(row['YEARS']) + ', ' + str(row['SALARY']) + ', ' + str(row['COMM'])
      row = ibm_db.fetch_assoc(result)
      
    result2 = ibm_db.exec_immediate(conn,"SELECT * FROM department WHERE substr(deptno,1,1) in ('A','B','C','D','E')")
    row2 = ibm_db.fetch_assoc(result2)
    while ( row2 ):
        if (row2['MGRNO'] == None): 
            row2['MGRNO'] = ''
        if (row2['LOCATION'] == None): 
            row2['LOCATION'] = ''
        output += str(row2['DEPTNO']) + ', ' + row2['DEPTNAME'] + ', ' + str(row2['MGRNO']) + ', ' + row2['ADMRDEPT'] + ', ' + row2['LOCATION']
        row2 = ibm_db.fetch_assoc(result2)
    
    result3 = ibm_db.exec_immediate(conn,"SELECT * FROM employee WHERE lastname IN ('HAAS','THOMPSON', 'KWAN', 'GEYER', 'STERN', 'PULASKI', 'HENDERSON', 'SPENSER', 'LUCCHESSI', 'OCONNELL', 'QUINTANA', 'NICHOLLS', 'ADAMSON', 'PIANKA', 'YOSHIMURA', 'SCOUTTEN', 'WALKER', 'BROWN', 'JONES', 'LUTZ', 'JEFFERSON', 'MARINO', 'SMITH', 'JOHNSON', 'PEREZ', 'SCHNEIDER', 'PARKER', 'SMITH', 'SETRIGHT', 'MEHTA', 'LEE', 'GOUNOT')")
    row3 = ibm_db.fetch_tuple(result3)
    while ( row3 ):
        output += row3[0] + ', ' + row3[3] + ', ' + row3[5]
        row3=ibm_db.fetch_tuple(result3)
    print(output)
Ejemplo n.º 8
0
    def run_test_153(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if server.DBMS_NAME[0:3] == "IDS":
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 0)

        result = ibm_db.exec_immediate(conn, "select * from org")

        row = ibm_db.fetch_assoc(result)
        while row:
            # printf("%4d ",row['DEPTNUMB'])
            # printf("%-14s ",row['DEPTNAME'])
            # printf("%4d ",row['MANAGER'])
            # printf("%-10s",row['DIVISION'])
            # printf("%-13s ",row['LOCATION'])
            # puts ""
            print "%4d %-14s %4d %-10s%-13s " % (
                row["DEPTNUMB"],
                row["DEPTNAME"],
                row["MANAGER"],
                row["DIVISION"],
                row["LOCATION"],
            )
            row = ibm_db.fetch_assoc(result)
    def run_test_152(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from project")

        row = ibm_db.fetch_assoc(result)
        while (row):
            #printf("%6s ",row['PROJNO'])
            #printf("%-24s ",row['PROJNAME'])
            #printf("%3s ",row['DEPTNO'])
            #printf("%6s",row['RESPEMP'])
            #printf("%7s ",row['PRSTAFF'])
            #printf("%10s ",row['PRSTDATE'])
            #printf("%10s ",row['PRENDATE'])
            #printf("%6s",row['MAJPROJ'])
            #puts ""
            if (row['MAJPROJ'] == None):
                row['MAJPROJ'] = ''
            print "%6s %-24s %3s %6s%7s %10s %10s %6s" % (
                row['PROJNO'], row['PROJNAME'], row['DEPTNO'], row['RESPEMP'],
                row['PRSTAFF'], row['PRSTDATE'], row['PRENDATE'],
                row['MAJPROJ'])
            row = ibm_db.fetch_assoc(result)
    def run_test_152(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if server.DBMS_NAME[0:3] == "IDS":
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from project")

        row = ibm_db.fetch_assoc(result)
        while row:
            # printf("%6s ",row['PROJNO'])
            # printf("%-24s ",row['PROJNAME'])
            # printf("%3s ",row['DEPTNO'])
            # printf("%6s",row['RESPEMP'])
            # printf("%7s ",row['PRSTAFF'])
            # printf("%10s ",row['PRSTDATE'])
            # printf("%10s ",row['PRENDATE'])
            # printf("%6s",row['MAJPROJ'])
            # puts ""
            if row["MAJPROJ"] == None:
                row["MAJPROJ"] = ""
            print "%6s %-24s %3s %6s%7s %10s %10s %6s" % (
                row["PROJNO"],
                row["PROJNAME"],
                row["DEPTNO"],
                row["RESPEMP"],
                row["PRSTAFF"],
                row["PRSTDATE"],
                row["PRENDATE"],
                row["MAJPROJ"],
            )
            row = ibm_db.fetch_assoc(result)
Ejemplo n.º 11
0
    def run_test_034(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if server.DBMS_NAME[0:3] == "IDS":
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from staff")
        row = ibm_db.fetch_assoc(result)
        if row:
            # printf("%5d  ",row['ID'])
            # printf("%-10s ",row['NAME'])
            # printf("%5d ",row['DEPT'])
            # printf("%-7s ",row['JOB'])
            # printf("%5d ", row['YEARS'])
            # printf("%15s ", row['SALARY'])
            # printf("%10s ", row['COMM'])
            # puts ""
            print "%5d %-10s %5d %-7s %5d %15s %10s" % (
                row["ID"],
                row["NAME"],
                row["DEPT"],
                row["JOB"],
                row["YEARS"],
                row["SALARY"],
                row["COMM"],
            )

        ibm_db.close(conn)
Ejemplo n.º 12
0
    def run_test_setgetOption(self):
        if sys.platform == 'zos':
            options = {}
        else:
            options = {ibm_db.SQL_ATTR_INFO_PROGRAMNAME: 'TestProgram'}
        conn = ibm_db.connect(config.database, config.user, config.password,
                              options)

        # Get the server type
        serverinfo = ibm_db.server_info(conn)

        if conn:
            if sys.platform != 'zos':
                value = ibm_db.get_option(conn,
                                          ibm_db.SQL_ATTR_INFO_PROGRAMNAME, 1)
                print("Connection options:\nSQL_ATTR_INFO_PROGRAMNAME = ",
                      end="")
                print(value)
            else:
                print("Connection options:\n", end="")

            returncode = ibm_db.set_option(conn,
                                           {ibm_db.SQL_ATTR_AUTOCOMMIT: 0}, 1)
            value = ibm_db.get_option(conn, ibm_db.SQL_ATTR_AUTOCOMMIT, 1)
            print("SQL_ATTR_AUTOCOMMIT = ", end="")
            print(str(value) + "\n")

            drop = "DROP TABLE TEMP_TEST"
            try:
                result = ibm_db.exec_immediate(conn, drop)
            except:
                pass

            # Create the table temp_test

            create = "CREATE TABLE TEMP_TEST (id INTEGER, name CHAR(16))"
            result = ibm_db.exec_immediate(conn, create)

            insert = "INSERT INTO temp_test values (1, 'cat')"
            ibm_db.exec_immediate(conn, insert)

            stmt = ibm_db.prepare(conn, "SELECT * FROM temp_test WHERE id > 1")
            if sys.platform != 'zos':
                returnCode = ibm_db.set_option(
                    stmt, {ibm_db.SQL_ATTR_QUERY_TIMEOUT: 20}, 0)
                value = ibm_db.get_option(stmt, ibm_db.SQL_ATTR_QUERY_TIMEOUT,
                                          0)
                print("Statement options:\nSQL_ATTR_QUERY_TIMEOUT = ", end="")
                print(str(value) + "\n")

            ibm_db.execute(stmt)
            if result:
                ibm_db.free_result(stmt)
            else:
                print(ibm_db.stmt_errormsg())
            ibm_db.rollback(conn)
            ibm_db.close(conn)
        else:
            print("Connection failed.")
Ejemplo n.º 13
0
  def run_test_061(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    create = 'CREATE SCHEMA AUTHORIZATION t'
    try:
      result = ibm_db.exec_immediate(conn, create) 
    except:
      pass
    
    create = 'CREATE TABLE t.t1( c1 integer, c2 varchar(40))'
    try:
      result = ibm_db.exec_immediate(conn, create) 
    except:
      pass
    
    create = 'CREATE TABLE t.t2( c1 integer, c2 varchar(40))'
    try:
      result = ibm_db.exec_immediate(conn, create) 
    except:
      pass
    
    create = 'CREATE TABLE t.t3( c1 integer, c2 varchar(40))'
    try:
      result = ibm_db.exec_immediate(conn, create) 
    except:
      pass
      
    create = 'CREATE TABLE t.t4( c1 integer, c2 varchar(40))'
    try:
      result = ibm_db.exec_immediate(conn, create) 
    except:
      pass
    
    if conn:
      server = ibm_db.server_info( conn )
      if (server.DBMS_NAME[0:3] == 'IDS'):
        op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
        ibm_db.set_option(conn, op, 0)

      result = ibm_db.tables(conn, None, 'T');    
      i = 0
      row = ibm_db.fetch_both(result)
      while ( row ):
        str = row['TABLE_SCHEM'] + row['TABLE_NAME'] + row['TABLE_TYPE']
        if (i < 4):
          print str
        i = i + 1
	row = ibm_db.fetch_both(result)

      ibm_db.exec_immediate(conn, 'DROP TABLE t.t1')
      ibm_db.exec_immediate(conn, 'DROP TABLE t.t2')
      ibm_db.exec_immediate(conn, 'DROP TABLE t.t3')
      ibm_db.exec_immediate(conn, 'DROP TABLE t.t4')

      print "done!"
    else:
      print "no connection: %s" % ibm_db.conn_errormsg()
Ejemplo n.º 14
0
    def run_test_061(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        create = 'CREATE SCHEMA AUTHORIZATION t'
        try:
            result = ibm_db.exec_immediate(conn, create)
        except:
            pass

        create = 'CREATE TABLE t.t1( c1 integer, c2 varchar(40))'
        try:
            result = ibm_db.exec_immediate(conn, create)
        except:
            pass

        create = 'CREATE TABLE t.t2( c1 integer, c2 varchar(40))'
        try:
            result = ibm_db.exec_immediate(conn, create)
        except:
            pass

        create = 'CREATE TABLE t.t3( c1 integer, c2 varchar(40))'
        try:
            result = ibm_db.exec_immediate(conn, create)
        except:
            pass

        create = 'CREATE TABLE t.t4( c1 integer, c2 varchar(40))'
        try:
            result = ibm_db.exec_immediate(conn, create)
        except:
            pass

        if conn:
            server = ibm_db.server_info(conn)
            if (server.DBMS_NAME[0:3] == 'IDS'):
                op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
                ibm_db.set_option(conn, op, 0)

            result = ibm_db.tables(conn, None, 'T')
            i = 0
            row = ibm_db.fetch_both(result)
            while (row):
                str = row['TABLE_SCHEM'] + row['TABLE_NAME'] + row['TABLE_TYPE']
                if (i < 4):
                    print str
                i = i + 1
                row = ibm_db.fetch_both(result)

            ibm_db.exec_immediate(conn, 'DROP TABLE t.t1')
            ibm_db.exec_immediate(conn, 'DROP TABLE t.t2')
            ibm_db.exec_immediate(conn, 'DROP TABLE t.t3')
            ibm_db.exec_immediate(conn, 'DROP TABLE t.t4')

            print "done!"
        else:
            print "no connection: %s" % ibm_db.conn_errormsg()
  def run_test_115(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)
    
    if conn:
      drop = "drop table numericliteral"
      try:
        ibm_db.exec_immediate( conn, drop )
      except:
        pass

      create = "create table numericliteral ( id INTEGER, data VARCHAR(50) )"
      ibm_db.exec_immediate(conn, create)

      insert = "INSERT INTO numericliteral (id, data) values (12, 'NUMERIC LITERAL TEST')"
      ibm_db.exec_immediate(conn, insert)

      stmt = ibm_db.prepare(conn, "SELECT data FROM numericliteral")
      ibm_db.execute(stmt)
      
#      NOTE: This is a workaround
#      function fetch_object() to be implemented...
#      row = ibm_db.fetch_object(stmt, 0)
      
      class Row:
          pass
      
      row = Row()
      ibm_db.fetch_row(stmt, 0)
      if (server.DBMS_NAME[0:3] != 'IDS'):
        row.DATA = ibm_db.result(stmt, 'DATA')
      else:
        row.DATA = ibm_db.result(stmt, 'data')
      print(row.DATA)

      insert = "UPDATE numericliteral SET data = '@@@@@@@@@@' WHERE id = '12'"
      ibm_db.exec_immediate(conn, insert)

      stmt = ibm_db.prepare(conn, "SELECT data FROM numericliteral")
      ibm_db.execute(stmt)
      
#      row = ibm_db.fetch_object(stmt, 0)
      ibm_db.fetch_row(stmt, 0)
      if (server.DBMS_NAME[0:3] != 'IDS'):
        row.DATA = ibm_db.result(stmt, 'DATA')
      else:
        row.DATA = ibm_db.result(stmt, 'data')
      print(row.DATA)
    else:
      print("Connection failed.")
Ejemplo n.º 16
0
    def run_test_115(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        if conn:
            drop = "drop table numericliteral"
            try:
                ibm_db.exec_immediate(conn, drop)
            except:
                pass

            create = "create table numericliteral ( id INTEGER, data VARCHAR(50) )"
            ibm_db.exec_immediate(conn, create)

            insert = "INSERT INTO numericliteral (id, data) values (12, 'NUMERIC LITERAL TEST')"
            ibm_db.exec_immediate(conn, insert)

            stmt = ibm_db.prepare(conn, "SELECT data FROM numericliteral")
            ibm_db.execute(stmt)

            #      NOTE: This is a workaround
            #      function fetch_object() to be implemented...
            #      row = ibm_db.fetch_object(stmt, 0)

            class Row:
                pass

            row = Row()
            ibm_db.fetch_row(stmt, 0)
            if (server.DBMS_NAME[0:3] != 'IDS'):
                row.DATA = ibm_db.result(stmt, 'DATA')
            else:
                row.DATA = ibm_db.result(stmt, 'data')
            print row.DATA

            insert = "UPDATE numericliteral SET data = '@@@@@@@@@@' WHERE id = '12'"
            ibm_db.exec_immediate(conn, insert)

            stmt = ibm_db.prepare(conn, "SELECT data FROM numericliteral")
            ibm_db.execute(stmt)

            #      row = ibm_db.fetch_object(stmt, 0)
            ibm_db.fetch_row(stmt, 0)
            if (server.DBMS_NAME[0:3] != 'IDS'):
                row.DATA = ibm_db.result(stmt, 'DATA')
            else:
                row.DATA = ibm_db.result(stmt, 'data')
            print row.DATA
        else:
            print "Connection failed."
    def run_test_264(self):
        # Make a connection
        conn = ibm_db.connect(config.database, config.user, config.password)

        if conn:
            server = ibm_db.server_info(conn)
            if server.DBMS_NAME[0:3] == "IDS":
                op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
                ibm_db.set_option(conn, op, 1)

            # Drop the tab_bigint table, in case it exists
            drop = "DROP TABLE tab_bigint"
            result = ""
            try:
                result = ibm_db.exec_immediate(conn, drop)
            except:
                pass
            # Create the tab_bigint table
            if server.DBMS_NAME[0:3] == "IDS":
                create = "CREATE TABLE tab_bigint (col1 INT8, col2 INT8, col3 INT8, col4 INT8)"
            else:
                create = "CREATE TABLE tab_bigint (col1 BIGINT, col2 BIGINT, col3 BIGINT, col4 BIGINT)"
            result = ibm_db.exec_immediate(conn, create)

            insert = "INSERT INTO tab_bigint values (-9223372036854775807, 9223372036854775807, 0, NULL)"
            res = ibm_db.exec_immediate(conn, insert)
            print "Number of inserted rows:", ibm_db.num_rows(res)

            stmt = ibm_db.prepare(conn, "SELECT * FROM tab_bigint")
            ibm_db.execute(stmt)
            data = ibm_db.fetch_both(stmt)
            while data:
                print data[0]
                print data[1]
                print data[2]
                print data[3]
                print type(data[0]) is long
                print type(data[1]) is long
                print type(data[2]) is long
                data = ibm_db.fetch_both(stmt)

            # test ibm_db.result for fetch of bigint
            stmt1 = ibm_db.prepare(conn, "SELECT col2 FROM tab_bigint")
            ibm_db.execute(stmt1)
            ibm_db.fetch_row(stmt1, 0)
            if server.DBMS_NAME[0:3] != "IDS":
                row1 = ibm_db.result(stmt1, "COL2")
            else:
                row1 = ibm_db.result(stmt1, "col2")
            print row1

            ibm_db.close(conn)
  def run_test_264(self):
    # Make a connection
    conn = ibm_db.connect(config.database, config.user, config.password)

    if conn:
       server = ibm_db.server_info( conn )
       if (server.DBMS_NAME[0:3] == 'IDS'):
          op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
          ibm_db.set_option(conn, op, 1)

       # Drop the tab_bigint table, in case it exists
       drop = 'DROP TABLE tab_bigint'
       result = ''
       try:
         result = ibm_db.exec_immediate(conn, drop)
       except:
         pass
       # Create the tab_bigint table
       if (server.DBMS_NAME[0:3] == 'IDS'):
          create = "CREATE TABLE tab_bigint (col1 INT8, col2 INT8, col3 INT8, col4 INT8)"
       else:
          create = "CREATE TABLE tab_bigint (col1 BIGINT, col2 BIGINT, col3 BIGINT, col4 BIGINT)"
       result = ibm_db.exec_immediate(conn, create)

       insert = "INSERT INTO tab_bigint values (-9223372036854775807, 9223372036854775807, 0, NULL)"
       res = ibm_db.exec_immediate(conn, insert)
       print("Number of inserted rows:", ibm_db.num_rows(res))

       stmt = ibm_db.prepare(conn, "SELECT * FROM tab_bigint")
       ibm_db.execute(stmt)
       data = ibm_db.fetch_both(stmt)
       while ( data ):
         print(data[0])
         print(data[1])
         print(data[2])
         print(data[3])
         print(type(data[0]) is int)
         print(type(data[1]) is int) 
         print(type(data[2]) is int)
         data = ibm_db.fetch_both(stmt)

       # test ibm_db.result for fetch of bigint
       stmt1 = ibm_db.prepare(conn, "SELECT col2 FROM tab_bigint")
       ibm_db.execute(stmt1)
       ibm_db.fetch_row(stmt1, 0)
       if (server.DBMS_NAME[0:3] != 'IDS'):
         row1 = ibm_db.result(stmt1, 'COL2')
       else:
         row1 = ibm_db.result(stmt1, 'col2')
       print(row1)
       
       ibm_db.close(conn)
Ejemplo n.º 19
0
  def run_test_159(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "select name,job from staff")
    i = 1
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("%3d %10s %10s\n",i, row['NAME'], row['JOB'])
      print("%3d %10s %10s" % (i, row['NAME'], row['JOB']))
      i += 1
      row = ibm_db.fetch_assoc(result)
  def run_test_264(self):
    # Make a connection
    conn = ibm_db.connect(config.database, config.user, config.password)

    if conn:
       server = ibm_db.server_info( conn )
       if (server.DBMS_NAME[0:3] == 'IDS'):
          op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
          ibm_db.set_option(conn, op, 1)

       # Drop the tab_bigint table, in case it exists
       drop = 'DROP TABLE tab_bigint'
       result = ''
       try:
         result = ibm_db.exec_immediate(conn, drop)
       except:
         pass
       # Create the tab_bigint table
       if (server.DBMS_NAME[0:3] == 'IDS'):
          create = "CREATE TABLE tab_bigint (col1 INT8, col2 INT8, col3 INT8, col4 INT8)"
       else:
          create = "CREATE TABLE tab_bigint (col1 BIGINT, col2 BIGINT, col3 BIGINT, col4 BIGINT)"
       result = ibm_db.exec_immediate(conn, create)

       insert = "INSERT INTO tab_bigint values (-9223372036854775807, 9223372036854775807, 0, NULL)"
       res = ibm_db.exec_immediate(conn, insert)
       print("Number of inserted rows:", ibm_db.num_rows(res))

       stmt = ibm_db.prepare(conn, "SELECT * FROM tab_bigint")
       ibm_db.execute(stmt)
       data = ibm_db.fetch_both(stmt)
       while ( data ):
         print(data[0])
         print(data[1])
         print(data[2])
         print(data[3])
         if sys.version_info >= (3, ):
            print(type(data[0]) is int)
            print(type(data[1]) is int)
            print(type(data[2]) is int)
         else:
            print(type(data[0]) is long)
            print(type(data[1]) is long)
            print(type(data[2]) is long)
         data = ibm_db.fetch_both(stmt)

       ibm_db.close(conn)
Ejemplo n.º 21
0
  def run_test_159a(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "select prstdate,prendate from project")
    i = 1
    
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("%3d %10s %10s\n",i, row['PRSTDATE'], row['PRENDATE'])
      print "%3d %10s %10s" % (i, row['PRSTDATE'], row['PRENDATE'])
      i += 1
      row = ibm_db.fetch_assoc(result)
    def run_test_159a(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if server.DBMS_NAME[0:3] == "IDS":
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select prstdate,prendate from project")
        i = 1

        row = ibm_db.fetch_assoc(result)
        while row:
            # printf("%3d %10s %10s\n",i, row['PRSTDATE'], row['PRENDATE'])
            print "%3d %10s %10s" % (i, row["PRSTDATE"], row["PRENDATE"])
            i += 1
            row = ibm_db.fetch_assoc(result)
Ejemplo n.º 23
0
  def run_test_153(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)
    
    result = ibm_db.exec_immediate(conn, "select * from org")
    
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("%4d ",row['DEPTNUMB'])
      #printf("%-14s ",row['DEPTNAME'])
      #printf("%4d ",row['MANAGER'])
      #printf("%-10s",row['DIVISION'])
      #printf("%-13s ",row['LOCATION'])
      #puts ""
      print "%4d %-14s %4d %-10s%-13s " % (row['DEPTNUMB'], row['DEPTNAME'], row['MANAGER'], row['DIVISION'], row['LOCATION'])
      row = ibm_db.fetch_assoc(result)
  def run_test_151(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)
    
    result = ibm_db.exec_immediate(conn, "select * from sales")
    
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("%-10s ",row['SALES_DATE'])
      #printf("%-15s ",row['SALES_PERSON'])
      #printf("%-15s ",row['REGION'])
      #printf("%4s",row['SALES'])
      #puts ""
      if (row['SALES'] == None):
        row['SALES'] = ''
      print("%-10s %-15s %-15s %4s" % (row['SALES_DATE'], row['SALES_PERSON'], row['REGION'], row['SALES']))
      row = ibm_db.fetch_assoc(result)
  def run_test_151(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)
    
    result = ibm_db.exec_immediate(conn, "select * from sales")
    
    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("%-10s ",row['SALES_DATE'])
      #printf("%-15s ",row['SALES_PERSON'])
      #printf("%-15s ",row['REGION'])
      #printf("%4s",row['SALES'])
      #puts ""
      if (row['SALES'] == None):
        row['SALES'] = ''
      print("%-10s %-15s %-15s %4s" % (row['SALES_DATE'], row['SALES_PERSON'], row['REGION'], row['SALES']))
      row = ibm_db.fetch_assoc(result)
  def run_test_018(self):
    conn = ibm_db.connect(config.database, config.user, config.password)
    ibm_db.autocommit(conn, ibm_db.SQL_AUTOCOMMIT_ON)
    if conn:
      stmt = ibm_db.prepare(conn, "SELECT * from animals WHERE weight < 10.0" )
      ibm_db.set_option(stmt, {ibm_db.SQL_ATTR_ROWCOUNT_PREFETCH : ibm_db.SQL_ROWCOUNT_PREFETCH_ON}, 2)
      result = ibm_db.execute(stmt)
      if result:
        rows = ibm_db.num_rows(stmt)
        print "affected row:", rows
        ibm_db.free_result(stmt)
      else:
        print ibm_db.stmt_errormsg()

      ibm_db.set_option(stmt, {ibm_db.SQL_ATTR_ROWCOUNT_PREFETCH : ibm_db.SQL_ROWCOUNT_PREFETCH_OFF}, 2)
      result = ibm_db.execute(stmt)
      if result:
        rows = ibm_db.num_rows(stmt)
        print "affected row:", rows
        ibm_db.free_result(stmt)
      else:
        print ibm_db.stmt_errormsg()

      ibm_db.set_option(stmt, {ibm_db.SQL_ATTR_ROWCOUNT_PREFETCH : ibm_db.SQL_ROWCOUNT_PREFETCH_ON}, 2)
      result = ibm_db.execute(stmt)
      if result:
        rows = ibm_db.num_rows(stmt)
        print "affected row:", rows
      else:
        print ibm_db.stmt_errormsg()

      ibm_db.close(conn)
    else:
      print "no connection:", ibm_db.conn_errormsg()
    def run_test_261(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        if (server.DBMS_NAME[0:3] == 'IDS'):
            sql = "SELECT breed, TRIM(TRAILING FROM name) AS name FROM animals WHERE id = ?"
        else:
            sql = "SELECT breed, RTRIM(name) AS name FROM animals WHERE id = ?"

        if conn:
            stmt = ibm_db.prepare(conn, sql)
            ibm_db.execute(stmt, (0, ))

            #      NOTE: This is a workaround
            #      function fetch_object() to be implemented...
            #      pet = ibm_db.fetch_object(stmt)
            #      while (pet):
            #          print "Come here, %s, my little %s!" % (pet.NAME, pet.BREED)
            #          pet = ibm_db.fetch_object(stmt)

            class Pet:
                pass

            data = ibm_db.fetch_assoc(stmt)
            while (data):
                pet = Pet()
                pet.NAME = data['NAME']
                pet.BREED = data['BREED']
                print "Come here, %s, my little %s!" % (pet.NAME, pet.BREED)
                data = ibm_db.fetch_assoc(stmt)

            ibm_db.close(conn)

        else:
            print "Connection failed."
  def run_test_261(self):
    conn = ibm_db.connect(config.database, config.user, config.password)
    
    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    if (server.DBMS_NAME[0:3] == 'IDS'):
      sql = "SELECT breed, TRIM(TRAILING FROM name) AS name FROM animals WHERE id = ?"
    else:
      sql = "SELECT breed, RTRIM(name) AS name FROM animals WHERE id = ?"

    if conn:
      stmt = ibm_db.prepare(conn, sql)
      ibm_db.execute(stmt, (0,))

#      NOTE: This is a workaround
#      function fetch_object() to be implemented...
#      pet = ibm_db.fetch_object(stmt)
#      while (pet):
#          print "Come here, %s, my little %s!" % (pet.NAME, pet.BREED)
#          pet = ibm_db.fetch_object(stmt)
      
      class Pet:
          pass
      
      data = ibm_db.fetch_assoc(stmt)
      while ( data ):
         pet = Pet()
         pet.NAME = data['NAME']
         pet.BREED = data['BREED']
         print("Come here, %s, my little %s!" % (pet.NAME, pet.BREED))
         data = ibm_db.fetch_assoc(stmt)
         
      ibm_db.close(conn)
      
    else:
      print("Connection failed.")
Ejemplo n.º 29
0
  def run_test_160(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 0)

    result = ibm_db.exec_immediate(conn, "select * from emp_act")
    
    row = ibm_db.fetch_both(result)
    while ( row ):
      #printf("%6s  ",row[0])
      #printf("%-6s ",row[1])
      #printf("%3d ",row[2])
      #printf("%9s ",row['EMPTIME'])
      #printf("%10s ", row['EMSTDATE'])
      #printf("%10s ", row['EMENDATE'])
      #printf("%6s ", row[0])
      #puts ""
      print "%6s  %-6s %3d %9s %10s %10s %6s " % (row[0], row[1], row[2], row['EMPTIME'], row['EMSTDATE'], row['EMENDATE'], row[0])
      row = ibm_db.fetch_both(result)
  def run_test_161(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "select * from emp_act order by projno desc")
    row = ibm_db.fetch_both(result)
    count = 1
    while ( row ):
      print "Record",count,": %6s  %-6s %3d %9s %10s %10s %6s " % (row[0], row[1], row[2], row['EMPTIME'], row['EMSTDATE'], row['EMENDATE'], row[0])
      
      result2 = ibm_db.exec_immediate(conn,"select * from employee where employee.empno='" + row['EMPNO'] + "'")
      row2 = ibm_db.fetch_both(result2)
      if row2:        
         print ">>%s,%s,%s,%s,%s,%s,%s" % (row2['EMPNO'], row2['FIRSTNME'],row2['MIDINIT'], row2[3], row2[3], row2[5], row2[6])
      count = count + 1
      if (count > 10):
          break
      row = ibm_db.fetch_both(result)
Ejemplo n.º 31
0
    def run_test_160(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info( conn )
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        result = ibm_db.exec_immediate(conn, "select * from emp_act")

        row = ibm_db.fetch_both(result)
        while ( row ):
            #printf("%6s  ",row[0])
            #printf("%-6s ",row[1])
            #printf("%3d ",row[2])
            #printf("%9s ",row['EMPTIME'])
            #printf("%10s ", row['EMSTDATE'])
            #printf("%10s ", row['EMENDATE'])
            #printf("%6s ", row[0])
            #puts ""
            print("%6s  %-6s %3d %9s %10s %10s %6s " % (row[0], row[1], row[2], row['EMPTIME'], row['EMSTDATE'], row['EMENDATE'], row[0]))
            row = ibm_db.fetch_both(result)
Ejemplo n.º 32
0
    def run_test_034(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 0)

        result = ibm_db.exec_immediate(conn, "select * from staff")
        row = ibm_db.fetch_assoc(result)
        if (row):
            #printf("%5d  ",row['ID'])
            #printf("%-10s ",row['NAME'])
            #printf("%5d ",row['DEPT'])
            #printf("%-7s ",row['JOB'])
            #printf("%5d ", row['YEARS'])
            #printf("%15s ", row['SALARY'])
            #printf("%10s ", row['COMM'])
            #puts ""
            print "%5d %-10s %5d %-7s %5d %15s %10s" % (
                row['ID'], row['NAME'], row['DEPT'], row['JOB'], row['YEARS'],
                row['SALARY'], row['COMM'])

        ibm_db.close(conn)
	def run_test_trusted_context_pconnect(self):
		sql_drop_role = "DROP ROLE role_01"
		sql_create_role = "CREATE ROLE role_01"

		sql_drop_trusted_context = "DROP TRUSTED CONTEXT ctx"

		sql_create_trusted_context = "CREATE TRUSTED CONTEXT ctx BASED UPON CONNECTION USING SYSTEM AUTHID "
		sql_create_trusted_context += config.auth_user
		sql_create_trusted_context += " ATTRIBUTES (ADDRESS '"
		sql_create_trusted_context += config.hostname
		sql_create_trusted_context += "') DEFAULT ROLE role_01 ENABLE WITH USE FOR "
		sql_create_trusted_context += config.tc_user

		sql_drop_table = "DROP TABLE trusted_table"
		sql_create_table = "CREATE TABLE trusted_table (i1 int, i2 int)"

		sql_select = "SELECT * FROM trusted_table"

		# Setting up database.
		conn = ibm_db.connect(config.database, config.user, config.password)
		if conn:
			sql_grant_permission = "GRANT INSERT ON TABLE trusted_table TO ROLE role_01"
			sql_create_trusted_context_01 = sql_create_trusted_context + " WITH AUTHENTICATION"
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_role)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_role)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_grant_permission)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_trusted_context_01)
			except:
				pass
				
			# Populate the trusted_table
			values = (\
				(10, 20),\
				(20, 40),\
			)
			sql_insert = 'INSERT INTO trusted_table (i1, i2) VALUES (?, ?)'
			stmt = ibm_db.prepare(conn, sql_insert)
			if stmt:
				for value in values:
					result = ibm_db.execute(stmt, value)
			ibm_db.close(conn)
		else:
			print("Connection failed.")

		options = {ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT:	ibm_db.SQL_TRUE}
		tc_options = {ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass}
		dsn = "DATABASE=%s;HOSTNAME=%s;PORT=%d;PROTOCOL=TCPIP;UID=%s;PWD=%s;" % (config.database, config.hostname, config.port, config.auth_user, config.auth_pass)

		# Making trusted connection and performing normal operations.
		tc_conn = ibm_db.pconnect(dsn, "", "", options)
		if tc_conn:
			print("Trusted connection succeeded.")
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				userBefore = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				ibm_db.set_option(tc_conn, tc_options, 1)
				userAfter = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				if userBefore != userAfter:
					print("User has been switched.")
					
					# Inserting into table using trusted_user.
					sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (?, ?)"
					stmt = ibm_db.prepare(tc_conn, sql_insert)
					result = ibm_db.execute(stmt, (300, 500))
					
					# Updating table using trusted_user.
					sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
					try:
						stmt = ibm_db.exec_immediate(tc_conn, sql_update)
					except:
						print(ibm_db.stmt_errormsg())
			ibm_db.close(tc_conn)
		else:
			print("Trusted connection failed.")

		# Creating 10 Persistance connections and checking if trusted context is enabled (Cataloged connections)
		for i in range(10):
			tc_conn = ibm_db.pconnect(dsn, "", "")
			if tc_conn:
				val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
				if val:
					userAfter = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
					if userBefore != userAfter:
						print("Explicit Trusted Connection succeeded.")

		# Cleaning up database.
		conn = ibm_db.connect(config.database, config.user, config.password)

		if conn:
			print("Connection succeeded.")

			try:
				result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_role)
			except:
				pass
			ibm_db.close(conn)
		else:
			print("Connection failed.")
Ejemplo n.º 34
0
  def run_test_008(self):
    op = {ibm_db.ATTR_CASE: ibm_db.CASE_NATURAL}
    conn = ibm_db.connect(config.database, config.user, config.password, op)
    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if ('TABLE_NAME' in row):
      value1 = row['TABLE_NAME']
    if ('COLUMN_NAME' in row):
      value2 = row['COLUMN_NAME']
    if ('table_name' in row):
      value3 = row['table_name']
    if ('column_name' in row):
      value4 = row['column_name']
    print(value1)
    print(value2)
    print(value3)
    print(value4)

    op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
    ibm_db.set_option(conn, op, 1)
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if ('TABLE_NAME' in row):
      value1 = row['TABLE_NAME']
    if ('COLUMN_NAME' in row):
      value2 = row['COLUMN_NAME']
    if ('table_name' in row):
      value3 = row['table_name']
    if ('column_name' in row):
      value4 = row['column_name']
    print(value1)
    print(value2)
    print(value3)
    print(value4)
    
    op = {ibm_db.ATTR_CASE: ibm_db.CASE_LOWER}
    ibm_db.set_option(conn, op, 1)
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if ('TABLE_NAME' in row):
      value1 = row['TABLE_NAME']
    if ('COLUMN_NAME' in row):
      value2 = row['COLUMN_NAME']
    if ('table_name' in row):
      value3 = row['table_name']
    if ('column_name' in row):
      value4 = row['column_name']
    print(value1)
    print(value2)
    print(value3)
    print(value4)
  def run_test_008(self):
    op = {ibm_db.ATTR_CASE: ibm_db.CASE_NATURAL}
    conn = ibm_db.connect(config.database, config.user, config.password, op)
    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if (row.has_key('TABLE_NAME')):
      value1 = row['TABLE_NAME']
    if (row.has_key('COLUMN_NAME')):
      value2 = row['COLUMN_NAME']
    if (row.has_key('table_name')):
      value3 = row['table_name']
    if (row.has_key('column_name')):
      value4 = row['column_name']
    print value1
    print value2
    print value3
    print value4

    op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
    ibm_db.set_option(conn, op, 0)
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if (row.has_key('TABLE_NAME')):
      value1 = row['TABLE_NAME']
    if (row.has_key('COLUMN_NAME')):
      value2 = row['COLUMN_NAME']
    if (row.has_key('table_name')):
      value3 = row['table_name']
    if (row.has_key('column_name')):
      value4 = row['column_name']
    print value1
    print value2
    print value3
    print value4
    
    op = {ibm_db.ATTR_CASE: ibm_db.CASE_LOWER}
    ibm_db.set_option(conn, op, 0)
    if (server.DBMS_NAME[0:3] == 'IDS'):
      result = ibm_db.columns(conn,None,None,"employee")
    else:
      result = ibm_db.columns(conn,None,None,"EMPLOYEE")
    row = ibm_db.fetch_both(result)
    value1 = None
    value2 = None
    value3 = None
    value4 = None
    if (row.has_key('TABLE_NAME')):
      value1 = row['TABLE_NAME']
    if (row.has_key('COLUMN_NAME')):
      value2 = row['COLUMN_NAME']
    if (row.has_key('table_name')):
      value3 = row['table_name']
    if (row.has_key('column_name')):
      value4 = row['column_name']
    print value1
    print value2
    print value3
    print value4
Ejemplo n.º 36
0
    def run_test_trusted_context_pconnect(self):
        sql_drop_role = "DROP ROLE role_01"
        sql_create_role = "CREATE ROLE role_01"

        sql_drop_trusted_context = "DROP TRUSTED CONTEXT ctx"

        sql_create_trusted_context = "CREATE TRUSTED CONTEXT ctx BASED UPON CONNECTION USING SYSTEM AUTHID "
        sql_create_trusted_context += config.auth_user
        sql_create_trusted_context += " ATTRIBUTES (ADDRESS '"
        sql_create_trusted_context += config.hostname
        sql_create_trusted_context += "') DEFAULT ROLE role_01 ENABLE WITH USE FOR "
        sql_create_trusted_context += config.tc_user

        sql_drop_table = "DROP TABLE trusted_table"
        sql_create_table = "CREATE TABLE trusted_table (i1 int, i2 int)"

        sql_select = "SELECT * FROM trusted_table"

        # Setting up database.
        conn = ibm_db.connect(config.database, config.user, config.password)
        if conn:
            sql_grant_permission = "GRANT INSERT ON TABLE trusted_table TO ROLE role_01"
            sql_create_trusted_context_01 = sql_create_trusted_context + " WITH AUTHENTICATION"
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_role)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_create_role)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_create_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_grant_permission)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn,
                                               sql_create_trusted_context_01)
            except:
                pass

            # Populate the trusted_table
            values = (\
             (10, 20),\
             (20, 40),\
            )
            sql_insert = 'INSERT INTO trusted_table (i1, i2) VALUES (?, ?)'
            stmt = ibm_db.prepare(conn, sql_insert)
            if stmt:
                for value in values:
                    result = ibm_db.execute(stmt, value)
            ibm_db.close(conn)
        else:
            print "Connection failed."

        options = {ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT: ibm_db.SQL_TRUE}
        tc_options = {
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user,
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
        }
        dsn = "DATABASE=%s;HOSTNAME=%s;PORT=%d;PROTOCOL=TCPIP;UID=%s;PWD=%s;" % (
            config.database, config.hostname, config.port, config.auth_user,
            config.auth_pass)

        # Making trusted connection and performing normal operations.
        tc_conn = ibm_db.pconnect(dsn, "", "", options)
        if tc_conn:
            print "Trusted connection succeeded."
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                userBefore = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                ibm_db.set_option(tc_conn, tc_options, 1)
                userAfter = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                if userBefore != userAfter:
                    print "User has been switched."

                    # Inserting into table using trusted_user.
                    sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (?, ?)"
                    stmt = ibm_db.prepare(tc_conn, sql_insert)
                    result = ibm_db.execute(stmt, (300, 500))

                    # Updating table using trusted_user.
                    sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
                    try:
                        stmt = ibm_db.exec_immediate(tc_conn, sql_update)
                    except:
                        print ibm_db.stmt_errormsg()
            ibm_db.close(tc_conn)
        else:
            print "Trusted connection failed."

        # Creating 10 Persistance connections and checking if trusted context is enabled (Cataloged connections)
        for i in xrange(10):
            tc_conn = ibm_db.pconnect(dsn, "", "")
            if tc_conn:
                val = ibm_db.get_option(tc_conn,
                                        ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
                if val:
                    userAfter = ibm_db.get_option(
                        tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                    if userBefore != userAfter:
                        print "Explicit Trusted Connection succeeded."

        # Cleaning up database.
        conn = ibm_db.connect(config.database, config.user, config.password)

        if conn:
            print "Connection succeeded."

            try:
                result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_role)
            except:
                pass
            ibm_db.close(conn)
        else:
            print "Connection failed."
  def run_test_156(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 1)

    result = ibm_db.exec_immediate(conn, "select * from staff")

    row = ibm_db.fetch_assoc(result)      
    count = 1
    while ( row ): 
        if (row['YEARS'] == None):
            row['YEARS'] = ''
        if (row['COMM'] == None):
            row['COMM'] = ''
        print row['ID'],row['NAME'],row['JOB'],row['YEARS'], row['SALARY'], row['COMM']
        row = ibm_db.fetch_assoc(result)
  
    result2 = ibm_db.exec_immediate(conn,"select * from department where substr(deptno,1,1) in ('A','B','C','D','E')")
    row2 = ibm_db.fetch_assoc(result2)
    while ( row2 ):    
        if (row2['MGRNO'] == None):
            row2['MGRNO'] = ''
        print row2['DEPTNO'], row2['DEPTNAME'], row2['MGRNO'], row2['ADMRDEPT'], row2['LOCATION']
        row2 = ibm_db.fetch_assoc(result2)

#__END__
#__LUW_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__ZOS_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__SYSTEMI_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__IDS_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
Ejemplo n.º 38
0
# Otherwise, Complete The Status Message
else:
    print("Done!\n")

# Create A Dictionary That Contains The Value Needed To Turn Row Prefetch Behavior On;
# This Enables Db2 To Determine The Number Of Rows That Are Returned By A Query (So The
# Entire Result Set Can Be Prefetched Into Memory, When Possible)
stmtOption = {
    ibm_db.SQL_ATTR_ROWCOUNT_PREFETCH: ibm_db.SQL_ROWCOUNT_PREFETCH_ON
}

# Attempt To Set The Statement Option Specified
print("Turning SQL_ATTR_ROWCOUNT_PREFETCH behavior ON ... ", end="")
try:
    returnCode = ibm_db.set_option(preparedStmt, stmtOption, 0)
except Exception:
    pass

# If The Statement Option Could Not Be Set, Display An Error Message And Exit
if returnCode is False:
    print("\nERROR: Unable to set the statement option specified.\n")
    conn.closeConnection()
    exit(-1)

# Otherwise, Complete The Status Message
else:
    print("Done!\n")

# Execute The Prepared SQL Statement Again
print("Executing the prepared SQL statement again ... ", end="")
Ejemplo n.º 39
0
else:
    print("Done!\n")

# Create A Dictionary That Contains Values For The Connection Options That Can Only Be Set
# After A Database Connection Is Established
connectOptions = {
    ibm_db.SQL_ATTR_INFO_ACCTSTR: 'RESANDERS@IBM',
    ibm_db.SQL_ATTR_INFO_APPLNAME: 'ibm_db-set_option.py',
    ibm_db.SQL_ATTR_INFO_USERID: 'db2inst1',
    ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'ibm_UDOO_X86'
}

# Attempt To Set The Connection Options Specified
print("Assigning values to four different connection options ... ", end="")
try:
    returnCode = ibm_db.set_option(dbConnection, connectOptions, 1)
except Exception:
    pass

# If The Connection Options Could Not Be Set, Display An Error Message And Exit
if returnCode is False:
    print("\nERROR: Unable to set the connection options specified.\n")
    if not dbConnection is None:
        ibm_db.close(dbConnection)
    exit(-1)

# Otherwise, Complete The Status Message
else:
    print("Done!\n")

# Display A Report Header
Ejemplo n.º 40
0
    def run_test_053(self):
        print("Client attributes passed through conection string:")

        options1 = {ibm_db.SQL_ATTR_INFO_USERID: 'db2inst1'}
        conn1 = ibm_db.connect(config.database, config.user, config.password, options1)
        val = ibm_db.get_option(conn1, ibm_db.SQL_ATTR_INFO_USERID, 1)
        print(val)

        options2 = {ibm_db.SQL_ATTR_INFO_ACCTSTR: 'account'}
        conn2 = ibm_db.connect(config.database, config.user, config.password, options2)
        val = ibm_db.get_option(conn2, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
        print(val)

        options3 = {ibm_db.SQL_ATTR_INFO_APPLNAME: 'myapp'}
        conn3 = ibm_db.connect(config.database, config.user, config.password, options3)
        val = ibm_db.get_option(conn3, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
        print(val)

        options4 = {ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'workstation'}
        conn4 = ibm_db.connect(config.database, config.user, config.password, options4)
        val = ibm_db.get_option(conn4, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
        print(val)

        options5 = {ibm_db.SQL_ATTR_INFO_USERID: 'kfb',
                    ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'kfbwork',
                    ibm_db.SQL_ATTR_INFO_ACCTSTR: 'kfbacc',
                    ibm_db.SQL_ATTR_INFO_APPLNAME: 'kfbapp'}
        conn5 = ibm_db.connect(config.database, config.user, config.password, options5)
        val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_USERID, 1)
        print(val)
        val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
        print(val)
        val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
        print(val)
        val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
        print(val)

        print("Client attributes passed post-conection:")

        options5 = {ibm_db.SQL_ATTR_INFO_USERID: 'db2inst1'}
        conn5 = ibm_db.connect(config.database, config.user, config.password)
        rc = ibm_db.set_option(conn5, options5, 1)
        val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_USERID, 1)
        print(val)

        options6 = {ibm_db.SQL_ATTR_INFO_ACCTSTR: 'account'}
        conn6 = ibm_db.connect(config.database, config.user, config.password)
        rc = ibm_db.set_option(conn6, options6, 1)
        val = ibm_db.get_option(conn6, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
        print(val)

        options7 = {ibm_db.SQL_ATTR_INFO_APPLNAME: 'myapp'}
        conn7 = ibm_db.connect(config.database, config.user, config.password)
        rc = ibm_db.set_option(conn7, options7, 1)
        val = ibm_db.get_option(conn7, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
        print(val)

        options8 = {ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'workstation'}
        conn8 = ibm_db.connect(config.database, config.user, config.password)
        rc = ibm_db.set_option(conn8, options8, 1)
        val = ibm_db.get_option(conn8, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
        print(val)
Ejemplo n.º 41
0
  def run_test_265(self):
    # Make a connection
    conn = ibm_db.connect(config.database, config.user, config.password)

    cursor_option = {ibm_db.SQL_ATTR_CURSOR_TYPE: ibm_db.SQL_CURSOR_STATIC}

    if conn:
      server = ibm_db.server_info( conn )
      if (server.DBMS_NAME[0:3] == 'IDS'):
         op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
         ibm_db.set_option(conn, op, 1)
      
      try:
        sql = 'drop table test'

        stmt = ibm_db.prepare(conn, sql)
        ibm_db.set_option(stmt, cursor_option, 0)
        ibm_db.execute(stmt)
      except:
        pass

      if ((server.DBMS_NAME[0:3] == 'IDS') or (server.DBMS_NAME[0:2] == "AS")):
        sql = "create table test(id integer, name VARCHAR(10), clob_col CLOB, some_var VARCHAR(100) )"
      else:
        sql = "create table test(id integer, name VARCHAR(10), clob_col CLOB, some_var XML )"

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))

      sql = 'select id from test'

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))

      sql = "insert into test values( 1, 'some', 'here is a clob value', '<?xml version=\"1.0\" encoding=\"UTF-8\" ?><test attribute=\"value\"/>')"

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))

      sql = "insert into test values(2, 'value', 'clob data', NULL)"

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))

      sql = "insert into test values(2, 'in varchar', 'data2', NULL)"

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))

      sql = 'select * from test'

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))
      row = ibm_db.fetch_tuple(stmt)
      while ( row ):
        print("%s, %s, %s, %s\n" %(row[0], row[1], row[2], strip_bom(row[3])))
        row = ibm_db.fetch_tuple(stmt)

      sql = 'select id, name from test where id = ?'

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      ibm_db.execute(stmt, (2,))
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))
      row = ibm_db.fetch_tuple(stmt)
      while ( row ):
        print("%s, %s\n" %(row[0], row[1]))
        row = ibm_db.fetch_tuple(stmt)

      if (server.DBMS_NAME[0:3] == 'IDS'):
        sql = "select * from test"
      else:
        sql = 'select * from test fetch first 12 rows only optimize for 12 rows'

      stmt = ibm_db.prepare(conn, sql)
      ibm_db.set_option(stmt, cursor_option, 0)
      #ibm_db.num_fields(stmt)
      ibm_db.execute(stmt)
      print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))
      row = ibm_db.fetch_tuple(stmt)
      while ( row ):
        print("%s, %s, %s, %s\n" % (row[0], row[1], row[2], strip_bom(row[3])))
        row = ibm_db.fetch_tuple(stmt)
      
      try:
        sql = 'drop table test'

        stmt = ibm_db.prepare(conn, sql)
        ibm_db.set_option(stmt, cursor_option, 0)
        ibm_db.execute(stmt)
        print("Number of affected rows: %d" % ibm_db.get_num_result(stmt))
      except:
        pass

      ibm_db.close(conn)
Ejemplo n.º 42
0
    def run_test_trusted_context_connect(self):
        sql_drop_role = "DROP ROLE role_01"
        sql_create_role = "CREATE ROLE role_01"

        sql_drop_trusted_context = "DROP TRUSTED CONTEXT ctx"

        sql_create_trusted_context = "CREATE TRUSTED CONTEXT ctx BASED UPON CONNECTION USING SYSTEM AUTHID "
        sql_create_trusted_context += config.auth_user
        sql_create_trusted_context += " ATTRIBUTES (ADDRESS '"
        sql_create_trusted_context += config.hostname
        sql_create_trusted_context += "') DEFAULT ROLE role_01 ENABLE WITH USE FOR "
        sql_create_trusted_context += config.tc_user

        sql_drop_table = "DROP TABLE trusted_table"
        sql_create_table = "CREATE TABLE trusted_table (i1 int, i2 int)"

        sql_select = "SELECT * FROM trusted_table"

        # Setting up database.
        conn = ibm_db.connect(config.database, config.user, config.password)
        if conn:
            sql_grant_permission = "GRANT INSERT ON TABLE trusted_table TO ROLE role_01"
            sql_create_trusted_context_01 = sql_create_trusted_context + " WITH AUTHENTICATION"
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_role)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_create_role)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_create_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_grant_permission)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn,
                                               sql_create_trusted_context_01)
            except:
                pass

            # Populate the trusted_table
            values = (\
                (10, 20),\
                (20, 40),\
            )
            sql_insert = 'INSERT INTO trusted_table (i1, i2) VALUES (?, ?)'
            stmt = ibm_db.prepare(conn, sql_insert)
            if stmt:
                for value in values:
                    result = ibm_db.execute(stmt, value)
            ibm_db.close(conn)
        else:
            print("Connection failed.")

        options = {ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT: ibm_db.SQL_TRUE}
        tc_options = {
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user,
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
        }
        tc_all_options = {
            ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT: ibm_db.SQL_TRUE,
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user,
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
        }
        dsn = "DATABASE=%s;HOSTNAME=%s;PORT=%d;PROTOCOL=TCPIP;UID=%s;PWD=%s;" % (
            config.database, config.hostname, config.port, config.auth_user,
            config.auth_pass)

        # Makeing normal connection and playing with it.
        tc_conn = ibm_db.connect(dsn, "", "")
        if tc_conn:
            print("Normal connection established.")
            result = ibm_db.set_option(tc_conn, tc_options, 1)
            print(ibm_db.conn_errormsg(tc_conn))
            ibm_db.close(tc_conn)

        tc_conn = ibm_db.connect(dsn, "", "")
        if tc_conn:
            print("Normal connection established.")
            result = ibm_db.set_option(tc_conn, tc_all_options, 1)
            print(ibm_db.conn_errormsg(tc_conn))
            ibm_db.close(tc_conn)

        tc_conn = ibm_db.connect(dsn, "", "", tc_all_options)
        if tc_conn:
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                print("Trusted connection succeeded.")
                get_tc_user = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                if config.tc_user != get_tc_user:
                    print("But trusted user is not switched.")
        ibm_db.close(tc_conn)

        # Making trusted connection and performing normal operations.
        tc_conn = ibm_db.connect(dsn, "", "", options)
        if tc_conn:
            print("Trusted connection succeeded.")
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                userBefore = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                ibm_db.set_option(tc_conn, tc_options, 1)
                userAfter = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                if userBefore != userAfter:
                    print("User has been switched.")

                    # Inserting into table using trusted_user.
                    sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (?, ?)"
                    stmt = ibm_db.prepare(tc_conn, sql_insert)
                    result = ibm_db.execute(stmt, (300, 500))

                    # Updating table using trusted_user.
                    sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
                    try:
                        stmt = ibm_db.exec_immediate(tc_conn, sql_update)
                    except:
                        print(ibm_db.stmt_errormsg())

            ibm_db.close(tc_conn)
        else:
            print("Trusted connection failed.")

        # Making trusted connection and switching to fake user.
        tc_conn = ibm_db.connect(dsn, "", "", options)

        if tc_conn:
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                print("Trusted connection succeeded.")
                ibm_db.set_option(
                    tc_conn, {
                        ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: "fakeuser",
                        ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD:
                        "******"
                    }, 1)

                sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
                try:
                    stmt = ibm_db.exec_immediate(tc_conn, sql_update)
                except:
                    print(ibm_db.stmt_errormsg())
            ibm_db.close(tc_conn)
        else:
            print("Connection failed.")

        # Making trusted connection and passing password first then user while switching.
        tc_conn = ibm_db.connect(dsn, "", "", options)
        tc_options_reversed = {
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass,
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user
        }

        if tc_conn:
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                print("Trusted connection succeeded.")
                userBefore = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                ibm_db.set_option(tc_conn, tc_options_reversed, 1)
                userAfter = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                if userBefore != userAfter:
                    print("User has been switched.")
            ibm_db.close(tc_conn)
        else:
            print("Connection failed.")

        # Making trusted connection and passing password first then user while switching.
        tc_conn = ibm_db.connect(dsn, "", "", options)
        tc_user_options = {
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user
        }
        tc_pass_options = {
            ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
        }

        if tc_conn:
            print("Trusted connection succeeded.")
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                userBefore = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                try:
                    ibm_db.set_option(tc_conn, tc_pass_options, 1)
                except:
                    print(ibm_db.conn_errormsg(tc_conn))
            ibm_db.close(tc_conn)
        else:
            print("Connection failed.")

        # Making trusted connection and passing only user while switching when both user and password are required.
        tc_conn = ibm_db.connect(dsn, "", "", options)

        if tc_conn:
            print("Trusted connection succeeded.")
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                ibm_db.set_option(tc_conn, tc_user_options, 1)

                sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
                try:
                    stmt = ibm_db.exec_immediate(tc_conn, sql_update)
                except:
                    print(ibm_db.stmt_errormsg())
            ibm_db.close(tc_conn)
        else:
            print("Connection failed.")

        # Make a connection
        conn = ibm_db.connect(config.database, config.user, config.password)

        if conn:
            # Dropping the trusted context, in case it exists
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
            except:
                pass

            # Dropping Role.
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_role)
            except:
                pass

            # Creating Role.
            try:
                result = ibm_db.exec_immediate(conn, sql_create_role)
            except:
                pass

            # Granting permissions to role.
            try:
                sql_grant_permission = "GRANT UPDATE ON TABLE trusted_table TO ROLE role_01"
                result = ibm_db.exec_immediate(conn, sql_grant_permission)
            except:
                pass

            # Creating trusted context
            try:
                sql_create_trusted_context_01 = sql_create_trusted_context + " WITHOUT AUTHENTICATION"
                result = ibm_db.exec_immediate(conn,
                                               sql_create_trusted_context_01)
            except:
                pass

            # Closing connection
            ibm_db.close(conn)
        else:
            print("Connection failed.")

        # Making trusted connection
        tc_conn = ibm_db.connect(dsn, "", "", options)
        if tc_conn:
            print("Trusted connection succeeded.")
            val = ibm_db.get_option(tc_conn,
                                    ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
            if val:
                userBefore = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                ibm_db.set_option(tc_conn, tc_user_options, 1)
                userAfter = ibm_db.get_option(
                    tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
                if userBefore != userAfter:
                    print("User has been switched.")

                    # Inserting into table using trusted_user.
                    sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (300, 500)"
                    try:
                        stmt = ibm_db.exec_immediate(tc_conn, sql_insert)
                    except:
                        print(ibm_db.stmt_errormsg())

                    # Updating table using trusted_user.
                    sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 20"
                    stmt = ibm_db.exec_immediate(tc_conn, sql_update)
            ibm_db.close(tc_conn)
        else:
            print("Connection failed.")

        # Cleaning up database.
        conn = ibm_db.connect(config.database, config.user, config.password)

        if conn:
            print("Connection succeeded.")

            try:
                result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_table)
            except:
                pass
            try:
                result = ibm_db.exec_immediate(conn, sql_drop_role)
            except:
                pass
            ibm_db.close(conn)
        else:
            print("Connection failed.")
	def run_test_trusted_context_connect(self):
		sql_drop_role = "DROP ROLE role_01"
		sql_create_role = "CREATE ROLE role_01"

		sql_drop_trusted_context = "DROP TRUSTED CONTEXT ctx"

		sql_create_trusted_context = "CREATE TRUSTED CONTEXT ctx BASED UPON CONNECTION USING SYSTEM AUTHID "
		sql_create_trusted_context += config.auth_user
		sql_create_trusted_context += " ATTRIBUTES (ADDRESS '"
		sql_create_trusted_context += config.hostname
		sql_create_trusted_context += "') DEFAULT ROLE role_01 ENABLE WITH USE FOR "
		sql_create_trusted_context += config.tc_user

		sql_drop_table = "DROP TABLE trusted_table"
		sql_create_table = "CREATE TABLE trusted_table (i1 int, i2 int)"

		sql_select = "SELECT * FROM trusted_table"

		# Setting up database.
		conn = ibm_db.connect(config.database, config.user, config.password)
		if conn:
			sql_grant_permission = "GRANT INSERT ON TABLE trusted_table TO ROLE role_01"
			sql_create_trusted_context_01 = sql_create_trusted_context + " WITH AUTHENTICATION"
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_role)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_role)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_grant_permission)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_create_trusted_context_01)
			except:
				pass
				
			# Populate the trusted_table
			values = (\
				(10, 20),\
				(20, 40),\
			)
			sql_insert = 'INSERT INTO trusted_table (i1, i2) VALUES (?, ?)'
			stmt = ibm_db.prepare(conn, sql_insert)		
			if stmt:
				for value in values:
					result = ibm_db.execute(stmt, value)
			ibm_db.close(conn)
		else:
			print("Connection failed.")

		options = {ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT: ibm_db.SQL_TRUE}
		tc_options = {
			ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user, 
			ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
		}
		tc_all_options = {
			ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT: ibm_db.SQL_TRUE, 
			ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user, 
			ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass
		}
		dsn = "DATABASE=%s;HOSTNAME=%s;PORT=%d;PROTOCOL=TCPIP;UID=%s;PWD=%s;" % (config.database, config.hostname, config.port, config.auth_user, config.auth_pass)

		# Makeing normal connection and playing with it.
		tc_conn = ibm_db.connect(dsn, "", "")
		if tc_conn:
			print("Normal connection established.")
			result = ibm_db.set_option(tc_conn, tc_options, 1)
			print(ibm_db.conn_errormsg(tc_conn))
			ibm_db.close(tc_conn)

		tc_conn = ibm_db.connect(dsn, "", "")
		if tc_conn:
			print("Normal connection established.")
			result = ibm_db.set_option(tc_conn, tc_all_options, 1)
			print(ibm_db.conn_errormsg(tc_conn))
			ibm_db.close(tc_conn)

		tc_conn = ibm_db.connect(dsn, "", "", tc_all_options)
		if tc_conn:
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				print("Trusted connection succeeded.")
				get_tc_user = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				if config.tc_user != get_tc_user:
					print("But trusted user is not switched.")
		ibm_db.close(tc_conn)

		# Making trusted connection and performing normal operations.
		tc_conn = ibm_db.connect(dsn, "", "", options)
		if tc_conn:
			print("Trusted connection succeeded.")
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				userBefore = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				ibm_db.set_option(tc_conn, tc_options, 1)
				userAfter = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				if userBefore != userAfter:
					print("User has been switched.")
					
					# Inserting into table using trusted_user.
					sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (?, ?)"
					stmt = ibm_db.prepare(tc_conn, sql_insert)
					result = ibm_db.execute(stmt, (300, 500))
					
					# Updating table using trusted_user.
					sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
					try:
						stmt = ibm_db.exec_immediate(tc_conn, sql_update)
					except:
						print(ibm_db.stmt_errormsg())
			
			ibm_db.close(tc_conn)
		else:
			print("Trusted connection failed.")

		# Making trusted connection and switching to fake user.
		tc_conn = ibm_db.connect(dsn, "", "", options)

		if tc_conn:
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				print("Trusted connection succeeded.")
				ibm_db.set_option(tc_conn, {ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: "fakeuser", ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: "******"}, 1)

				sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
				try:
					stmt = ibm_db.exec_immediate(tc_conn, sql_update)
				except:
					print(ibm_db.stmt_errormsg())
			ibm_db.close(tc_conn)
		else:
			print("Connection failed.")

		# Making trusted connection and passing password first then user while switching.
		tc_conn = ibm_db.connect(dsn, "", "", options)
		tc_options_reversed = {ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user}

		if tc_conn:
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				print("Trusted connection succeeded.")
				userBefore = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				ibm_db.set_option(tc_conn, tc_options_reversed, 1)
				userAfter = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				if userBefore != userAfter:
					print("User has been switched.")
			ibm_db.close(tc_conn)
		else:
			print("Connection failed.")	

		# Making trusted connection and passing password first then user while switching.
		tc_conn = ibm_db.connect(dsn, "", "", options)
		tc_user_options = {ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID: config.tc_user}
		tc_pass_options = {ibm_db.SQL_ATTR_TRUSTED_CONTEXT_PASSWORD: config.tc_pass}

		if tc_conn:
			print("Trusted connection succeeded.")
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				userBefore = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				try:
					ibm_db.set_option(tc_conn, tc_pass_options, 1)
				except:
					print(ibm_db.conn_errormsg(tc_conn))			
			ibm_db.close(tc_conn)
		else:
			print("Connection failed.")
		

		# Making trusted connection and passing only user while switching when both user and password are required.
		tc_conn = ibm_db.connect(dsn, "", "", options)

		if tc_conn:
			print("Trusted connection succeeded.")
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				ibm_db.set_option(tc_conn, tc_user_options, 1)

				sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 500"
				try:
					stmt = ibm_db.exec_immediate(tc_conn, sql_update)
				except:
					print(ibm_db.stmt_errormsg())			
			ibm_db.close(tc_conn)
		else:
			print("Connection failed.")
		

		# Make a connection
		conn = ibm_db.connect(config.database, config.user, config.password)

		if conn:
			# Dropping the trusted context, in case it exists
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
			except:
				pass

			# Dropping Role.
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_role)
			except:
				pass

			# Creating Role.
			try:
				result = ibm_db.exec_immediate(conn, sql_create_role)
			except:
				pass
		
			# Granting permissions to role.
			try:
				sql_grant_permission = "GRANT UPDATE ON TABLE trusted_table TO ROLE role_01"
				result = ibm_db.exec_immediate(conn, sql_grant_permission)
			except:
				pass
		
			# Creating trusted context
			try:
				sql_create_trusted_context_01 = sql_create_trusted_context + " WITHOUT AUTHENTICATION"
				result = ibm_db.exec_immediate(conn, sql_create_trusted_context_01)
			except:
				pass
			
			# Closing connection
			ibm_db.close(conn)
		else: 
			print("Connection failed.")			

		# Making trusted connection
		tc_conn = ibm_db.connect(dsn, "", "", options)
		if tc_conn:
			print("Trusted connection succeeded.")
			val = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_USE_TRUSTED_CONTEXT, 1)
			if val:
				userBefore = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				ibm_db.set_option(tc_conn, tc_user_options, 1)
				userAfter = ibm_db.get_option(tc_conn, ibm_db.SQL_ATTR_TRUSTED_CONTEXT_USERID, 1)
				if userBefore != userAfter:
					print("User has been switched.")
					
					# Inserting into table using trusted_user.
					sql_insert = "INSERT INTO " + config.user + ".trusted_table (i1, i2) VALUES (300, 500)"
					try:
						stmt = ibm_db.exec_immediate(tc_conn, sql_insert)
					except:
						print(ibm_db.stmt_errormsg())

					# Updating table using trusted_user.
					sql_update = "UPDATE " + config.user + ".trusted_table set i1 = 400 WHERE i2 = 20"
					stmt = ibm_db.exec_immediate(tc_conn, sql_update)
			ibm_db.close(tc_conn)
		else:
			print("Connection failed.")	

		# Cleaning up database.
		conn = ibm_db.connect(config.database, config.user, config.password)

		if conn:
			print("Connection succeeded.")

			try:
				result = ibm_db.exec_immediate(conn, sql_drop_trusted_context)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_table)
			except:
				pass
			try:
				result = ibm_db.exec_immediate(conn, sql_drop_role)
			except:
				pass
			ibm_db.close(conn)
		else:
			print("Connection failed.")
    def run_test_154(self):
        conn = ibm_db.connect(config.database, config.user, config.password)

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
            ibm_db.set_option(conn, op, 1)

        try:
            statement = 'DROP TABLE fetch_test'
            result = ibm_db.exec_immediate(conn, statement)
        except:
            pass

        server = ibm_db.server_info(conn)
        if (server.DBMS_NAME[0:3] == 'IDS'):
            statement = 'CREATE TABLE fetch_test (col1 VARCHAR(20), col2 CLOB, col3 INTEGER)'
            st0 = "INSERT INTO fetch_test VALUES ('column 0', 'Data in the clob 0', 0)"
            st1 = "INSERT INTO fetch_test VALUES ('column 1', 'Data in the clob 1', 1)"
            st2 = "INSERT INTO fetch_test VALUES ('column 2', 'Data in the clob 2', 2)"
            st3 = "INSERT INTO fetch_test VALUES ('column 3', 'Data in the clob 3', 3)"
        else:
            statement = 'CREATE TABLE fetch_test (col1 VARCHAR(20), col2 CLOB(20), col3 INTEGER)'
            st0 = "INSERT INTO fetch_test VALUES ('column 0', 'Data in the clob 0', 0)"
            st1 = "INSERT INTO fetch_test VALUES ('column 1', 'Data in the clob 1', 1)"
            st2 = "INSERT INTO fetch_test VALUES ('column 2', 'Data in the clob 2', 2)"
            st3 = "INSERT INTO fetch_test VALUES ('column 3', 'Data in the clob 3', 3)"
        result = ibm_db.exec_immediate(conn, statement)

        result = ibm_db.exec_immediate(conn, st0)
        result = ibm_db.exec_immediate(conn, st1)
        result = ibm_db.exec_immediate(conn, st2)
        result = ibm_db.exec_immediate(conn, st3)

        statement = "SELECT col1, col2 FROM fetch_test"
        result = ibm_db.prepare(conn, statement)
        ibm_db.execute(result)

        row = ibm_db.fetch_tuple(result)
        while (row):
            #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
            #        row[0],row[0].length, row[1],row[1].length)
            print("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long." %\
              (row[0], len(row[0]), row[1], len(row[1])))
            row = ibm_db.fetch_tuple(result)

        result = ibm_db.prepare(conn, statement)
        ibm_db.execute(result)

        row = ibm_db.fetch_assoc(result)
        while (row):
            #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
            #        row['COL1'], row['COL1'].length, row['COL2'], row['COL2'].length)
            print("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long." %\
              (row['COL1'], len(row['COL1']), row['COL2'], len(row['COL2'])))
            row = ibm_db.fetch_assoc(result)

        result = ibm_db.prepare(conn, statement)
        ibm_db.execute(result)

        row = ibm_db.fetch_both(result)
        while (row):
            #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
            #        row['COL1'], row['COL1'].length, row[1], row[1].length)
            print("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n" % \
              (row['COL1'],len(row['COL1']), row[1], len(row[1])))
            row = ibm_db.fetch_both(result)

        ibm_db.close(conn)
  def run_test_156(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 0)

    result = ibm_db.exec_immediate(conn, "select * from staff")

    row = ibm_db.fetch_assoc(result)      
    count = 1
    while ( row ): 
        if (row['YEARS'] == None):
            row['YEARS'] = ''
        if (row['COMM'] == None):
            row['COMM'] = ''
        print row['ID'],row['NAME'],row['JOB'],row['YEARS'], row['SALARY'], row['COMM']
        row = ibm_db.fetch_assoc(result)
  
    result2 = ibm_db.exec_immediate(conn,"select * from department where substr(deptno,1,1) in ('A','B','C','D','E')")
    row2 = ibm_db.fetch_assoc(result2)
    while ( row2 ):    
        if (row2['MGRNO'] == None):
            row2['MGRNO'] = ''
        print row2['DEPTNO'], row2['DEPTNAME'], row2['MGRNO'], row2['ADMRDEPT'], row2['LOCATION']
        row2 = ibm_db.fetch_assoc(result2)

#__END__
#__LUW_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__ZOS_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__SYSTEMI_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
#__IDS_EXPECTED__
#10 Sanders Mgr   7 18357.50 
#20 Pernal Sales 8 18171.25 612.45
#30 Marenghi Mgr   5 17506.75 
#40 OBrien Sales 6 18006.00 846.55
#50 Hanes Mgr   10 20659.80 
#60 Quigley Sales  16808.30 650.25
#70 Rothman Sales 7 16502.83 1152.00
#80 James Clerk  13504.60 128.20
#90 Koonitz Sales 6 18001.75 1386.70
#100 Plotz Mgr   7 18352.80 
#110 Ngan Clerk 5 12508.20 206.60
#120 Naughton Clerk  12954.75 180.00
#130 Yamaguchi Clerk 6 10505.90 75.60
#140 Fraye Mgr   6 21150.00 
#150 Williams Sales 6 19456.50 637.65
#160 Molinare Mgr   7 22959.20 
#170 Kermisch Clerk 4 12258.50 110.10
#180 Abrahams Clerk 3 12009.75 236.50
#190 Sneider Clerk 8 14252.75 126.50
#200 Scoutten Clerk  11508.60 84.20
#210 Lu Mgr   10 20010.00 
#220 Smith Sales 7 17654.50 992.80
#230 Lundquist Clerk 3 13369.80 189.65
#240 Daniels Mgr   5 19260.25 
#250 Wheeler Clerk 6 14460.00 513.30
#260 Jones Mgr   12 21234.00 
#270 Lea Mgr   9 18555.50 
#280 Wilson Sales 9 18674.50 811.50
#290 Quill Mgr   10 19818.00 
#300 Davis Sales 5 15454.50 806.10
#310 Graham Sales 13 21000.00 200.30
#320 Gonzales Sales 4 16858.20 844.00
#330 Burke Clerk 1 10988.00 55.50
#340 Edwards Sales 7 17844.00 1285.00
#350 Gafney Clerk 5 13030.50 188.00
#A00 SPIFFY COMPUTER SERVICE DIV. 000010 A00 None
#B01 PLANNING 000020 A00 None
#C01 INFORMATION CENTER 000030 A00 None
#D01 DEVELOPMENT CENTER  A00 None
#D11 MANUFACTURING SYSTEMS 000060 D01 None
#D21 ADMINISTRATION SYSTEMS 000070 D01 None
#E01 SUPPORT SERVICES 000050 A00 None
#E11 OPERATIONS 000090 E01 None
#E21 SOFTWARE SUPPORT 000100 E01 None
  def run_test_154(self):
    conn = ibm_db.connect(config.database, config.user, config.password)

    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      op = {ibm_db.ATTR_CASE: ibm_db.CASE_UPPER}
      ibm_db.set_option(conn, op, 0)

    try:
        statement = 'DROP TABLE fetch_test'
        result = ibm_db.exec_immediate(conn, statement)
    except:
        pass
    
    server = ibm_db.server_info( conn )
    if (server.DBMS_NAME[0:3] == 'IDS'):
      statement = 'CREATE TABLE fetch_test (col1 VARCHAR(20), col2 CLOB, col3 INTEGER)'
      st0 = "INSERT INTO fetch_test VALUES ('column 0', 'Data in the clob 0', 0)"
      st1 = "INSERT INTO fetch_test VALUES ('column 1', 'Data in the clob 1', 1)"
      st2 = "INSERT INTO fetch_test VALUES ('column 2', 'Data in the clob 2', 2)"
      st3 = "INSERT INTO fetch_test VALUES ('column 3', 'Data in the clob 3', 3)"
    else:
      statement = 'CREATE TABLE fetch_test (col1 VARCHAR(20), col2 CLOB(20), col3 INTEGER)'
      st0 = "INSERT INTO fetch_test VALUES ('column 0', 'Data in the clob 0', 0)"
      st1 = "INSERT INTO fetch_test VALUES ('column 1', 'Data in the clob 1', 1)"
      st2 = "INSERT INTO fetch_test VALUES ('column 2', 'Data in the clob 2', 2)"
      st3 = "INSERT INTO fetch_test VALUES ('column 3', 'Data in the clob 3', 3)"
    result = ibm_db.exec_immediate(conn, statement)

    result = ibm_db.exec_immediate(conn, st0)
    result = ibm_db.exec_immediate(conn, st1)
    result = ibm_db.exec_immediate(conn, st2)
    result = ibm_db.exec_immediate(conn, st3)

    statement = "SELECT col1, col2 FROM fetch_test"
    result = ibm_db.prepare(conn, statement)
    ibm_db.execute(result)

    row = ibm_db.fetch_tuple(result)
    while ( row ):
      #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
      #        row[0],row[0].length, row[1],row[1].length)
      print "\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long." %\
        (row[0], len(row[0]), row[1], len(row[1]))
      row = ibm_db.fetch_tuple(result)

    result = ibm_db.prepare(conn, statement)
    ibm_db.execute(result)

    row = ibm_db.fetch_assoc(result)
    while ( row ):
      #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
      #        row['COL1'], row['COL1'].length, row['COL2'], row['COL2'].length)
      print "\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long." %\
        (row['COL1'], len(row['COL1']), row['COL2'], len(row['COL2']))
      row = ibm_db.fetch_assoc(result)
      
    result = ibm_db.prepare(conn, statement)
    ibm_db.execute(result)

    row = ibm_db.fetch_both(result)
    while ( row ):
      #printf("\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n",
      #        row['COL1'], row['COL1'].length, row[1], row[1].length)
      print "\"%s\" from VARCHAR is %d bytes long, \"%s\" from CLOB is %d bytes long.\n" % \
        (row['COL1'],len(row['COL1']), row[1], len(row[1]))
      row = ibm_db.fetch_both(result)

    ibm_db.close(conn)
  def run_test_053(self):
    print("Client attributes passed through conection string:")

    options1 = {ibm_db.SQL_ATTR_INFO_USERID: 'db2inst1'}
    conn1 = ibm_db.connect(config.database, config.user, config.password, options1)
    val = ibm_db.get_option(conn1, ibm_db.SQL_ATTR_INFO_USERID, 1)
    print(val)

    options2 = {ibm_db.SQL_ATTR_INFO_ACCTSTR: 'account'}
    conn2 = ibm_db.connect(config.database, config.user, config.password, options2)
    val = ibm_db.get_option(conn2, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
    print(val)

    options3 = {ibm_db.SQL_ATTR_INFO_APPLNAME: 'myapp'}
    conn3 = ibm_db.connect(config.database, config.user, config.password, options3)
    val = ibm_db.get_option(conn3, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
    print(val)

    options4 = {ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'workstation'}
    conn4 = ibm_db.connect(config.database, config.user, config.password, options4)
    val = ibm_db.get_option(conn4, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
    print(val)

    options5 = {ibm_db.SQL_ATTR_INFO_USERID: 'kfb',
                ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'kfbwork',
                ibm_db.SQL_ATTR_INFO_ACCTSTR: 'kfbacc',
                ibm_db.SQL_ATTR_INFO_APPLNAME: 'kfbapp'}
    conn5 = ibm_db.connect(config.database, config.user, config.password, options5)
    val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_USERID, 1)
    print(val)
    val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
    print(val)
    val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
    print(val)
    val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
    print(val)

    print("Client attributes passed post-conection:")

    options5 = {ibm_db.SQL_ATTR_INFO_USERID: 'db2inst1'}
    conn5 = ibm_db.connect(config.database, config.user, config.password)
    rc = ibm_db.set_option(conn5, options5, 1)
    val = ibm_db.get_option(conn5, ibm_db.SQL_ATTR_INFO_USERID, 1)
    print(val)

    options6 = {ibm_db.SQL_ATTR_INFO_ACCTSTR: 'account'}
    conn6 = ibm_db.connect(config.database, config.user, config.password)
    rc = ibm_db.set_option(conn6, options6, 1)
    val = ibm_db.get_option(conn6, ibm_db.SQL_ATTR_INFO_ACCTSTR, 1)
    print(val)

    options7 = {ibm_db.SQL_ATTR_INFO_APPLNAME: 'myapp'}
    conn7 = ibm_db.connect(config.database, config.user, config.password)
    rc = ibm_db.set_option(conn7, options7, 1)
    val = ibm_db.get_option(conn7, ibm_db.SQL_ATTR_INFO_APPLNAME, 1)
    print(val)

    options8 = {ibm_db.SQL_ATTR_INFO_WRKSTNNAME: 'workstation'}
    conn8 = ibm_db.connect(config.database, config.user, config.password)
    rc = ibm_db.set_option(conn8, options8, 1)
    val = ibm_db.get_option(conn8, ibm_db.SQL_ATTR_INFO_WRKSTNNAME, 1)
    print(val)