4.2.2.3获取所有行数据 使用游标的 fetchall 方法获取结果集中的所有行数据。 from GBaseConnector import connect, GBaseError if __name__ == '__main__': config = {'host':'172.16.0.131', 'user':'root', 'passwd':'111111', 'port':5258, 'db':'test'} try: conn = connect() conn.connect(**config) cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS test") cur.execute("CREATE TABLE test (COL1 INT, COL2 VARCHAR(20))") opfmt = "INSERT INTO test(COL1, COL2) VALUES(%s, %s)" rows = [] for i in xrange(0, 100): rows.append((i, "row" + str(i))) cur.executemany(opfmt, rows) cur.execute("SELECT * FROM test") print cur.fetchall() cur.execute("DROP TABLE IF EXISTS test") except GBaseError.DatabaseError, err: print err finally: conn.close()
4.2.3获取多个结果集数据 当有多个结果集时,可使用如下方法获取多个结果集的数据。 from GBaseConnector import connect, GBaseError if __name__ == '__main__': config = {'host':'172.16.0.131', 'user':'root', 'passwd':'111111', 'port':5258, 'db':'test'} try: conn = connect() conn.connect(**config) cur = conn.cursor() cur.execute("DROP TABLE IF EXISTS test") cur.execute("CREATE TABLE test (COL1 INT, COL2 VARCHAR(20))") opfmt = "INSERT INTO test(COL1, COL2) VALUES(%s, %s)" rows = []
for i in xrange(0, 100): rows.append((i, "row" + str(i))) cur.executemany(opfmt, rows) iters = cur.execute("SELECT * FROM test limit 5;SELECT * FROM TEST LIMIT 10, 5", multi_stmt= True) for ter in iters: print ter.fetchall() cur.execute("DROP TABLE IF EXISTS test") except GBaseError.DatabaseError, err: print err finally: conn.close()
4.2.4获取下一个结果集 当有多个结果集返回时,可以使用游标的 nextset 方法跳过结果集后直接 获取下一个结果集的数据。 from GBaseConnector import connect, GBaseError if __name__ == '__main__': config = {'host':'172.16.0.131', 'user':'root', 'passwd':'111111', 'port':5258, 'db':'test'} try: conn = connect() conn.connect(**config) cur = conn.cursor() cur.execute("DROP TABLE IF EXISTS test") cur.execute("CREATE TABLE test (COL1 INT, COL2 VARCHAR(20))") opfmt = "INSERT INTO test(COL1, COL2) VALUES(%s, %s)" rows = [] for i in xrange(0, 100): rows.append((i, "row" + str(i))) cur.executemany(opfmt, rows) cur.execute("SELECT * FROM test limit 5;SELECT * FROM TEST LIMIT 10, 5;SELECT * FROM TEST LIMIT 15, 5", multi_stmt= True) cur.nextset(2) print cur.fetchall() cur.execute("DROP TABLE IF EXISTS test") except GBaseError.DatabaseError, err: print err finally: conn.close() 注意:获取下一个结果集方法 nextset 不能在遍历过程中使用,如下面的 例子。 iters = cur.execute("SELECT * FROM test limit 5;SELECT * FROM TEST LIMIT 10, 5;SELECT * FROM TEST LIMIT 15, 5", multi_stmt= True) for ter in iters: cur.nextset() print cur.fetchall()