Não existe um método simples para mostrar e manipular dados em uma grade na linguagem de programação Python, o método mais simples é bem parecido com o método utilizado em C++, você precisa escrever um código que retorna arrays e vetores para preencher a grade como se fosse uma tabela e precisa escrever métodos que permitem manipular a grade de vários modos, você encontra a toda documentação necessária neste link:
Classe WxGrid: http://wiki.wxpython.org/wxGrid#The_wxGrid_Class
Oracle
Você pode retornar os dados de uma tabela do banco de dados Oracle criando um cursor e executando uma pesquisa sobre ele, você utiliza o método fetchall() para retornar todas as linhas do seu set de dados.
Exemplo:
Neste exemplo criamos uma grade de dados e a preenchemos com os dados retornados de uma pesquisa no banco de dados.
Python
#!/usr/bin/env python # -*- coding: latin-1 -*- # Desenvolvimento Aberto # GradeDados.py # importa modulos import wx import wx.grid import cx_Oracle # Cria classe generica de uma WX.Grid # A classe abaixo faz parte da documentação WXPython oficial # Este trecho de código é util para manipular a grade class GenericTable(wx.grid.PyGridTableBase): def __init__(self, data, rowLabels=None, colLabels=None): wx.grid.PyGridTableBase.__init__(self) self.data = data self.rowLabels = rowLabels self.colLabels = colLabels def GetNumberRows(self): return len(self.data) def GetNumberCols(self): return len(self.data[0]) def GetColLabelValue(self, col): if self.colLabels: return self.colLabels[col] def GetRowLabelValue(self, row): if self.rowLabels: return self.rowLabels[row] def IsEmptyCell(self, row, col): return False def GetValue(self, row, col): return self.data[row][col] def SetValue(self, row, col, value): pass # Cria conexão Oracle def conectarORA(): sconexao = "user/p@55w0rd@localhost/XE" try: con = cx_Oracle.connect(sconexao) except ValueError: tkMessageBox.showinfo(title="Menssagem", message="Erro de Conexão", parent=janela) return con # Cria conexão con = conectarORA() # Executa e retorna SQL def retornaTabelaORA(sql, con): cursor = con.cursor() cursor.execute(sql) return cursor # Inicializa Grade dados = [] colLabels = [] rowLabels = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10") #Retorna metadados colunas = retornaTabelaORA("select COLUMN_NAME from ALL_TAB_COLUMNS where TABLE_NAME='BLOG'", con) metadados = colunas.fetchall() for cols in metadados: colLabels.append(str(str(str(str(cols).replace("(","")).replace(")","")).replace(",","")).replace("'","")) # Envia dados a grid tabela = retornaTabelaORA("Select * from Blog", con) resultado = tabela.fetchall() for conteudo in resultado: dados.append(conteudo) # Cria classe da grid class SimpleGrid(wx.grid.Grid): def __init__(self, parent): wx.grid.Grid.__init__(self, parent, -1, pos=(5,60), size=(850,200)) tableBase = GenericTable(dados, rowLabels, colLabels) self.SetTable(tableBase) # Cria formulario class TestFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "Acessando Dados Oracle DataBase", size=(900, 350)) panel = wx.Panel(self, wx.ID_ANY) label=wx.StaticText(panel, -1, label='WXPython - DataGrid - Oracle Database XE', pos=(300,20)) grid = SimpleGrid(panel) # Inicializa a aplicação app = wx.PySimpleApp() frame = TestFrame(None) frame.Show(True) app.MainLoop()