Retornando Dados Em Um DataGrid – WxGrid – Oracle Database – Python

Publicado: 17 de maio de 2014 em Python

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

WxGrid - Oracle

WxGrid – Oracle

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()
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s