Python/Bottle/PyMSSQL --> Gerar retorno de uma consulta direto para um objeto JSON

234 views
Skip to first unread message

Rubens José Rodrigues - TI

unread,
Jul 16, 2015, 12:54:01 PM7/16/15
to python...@googlegroups.com, python...@yahoogrupos.com.br
Pessoal,

Podem me indicar algum caminho no qual eu pego o resultado de uma consulta e
dela eu consiga transformar direto num objeto JSON ?

Eu hoje estou fazendo na unha, ou seja, pego uma consulta, transformo em
dicionário e dicionário eu crio um JSON, mas dá um trabalhão danado.

O que eu preciso:

- Estou usando o Bottle como framework, Python 3.4 e SQL Server
- A ideia é entregar esse objeto para o usuário remoto em JSON, nesse caso,
como por exemplo um cadastro de clientes

@route('/clientes')
def show_clientes():
db = pymssql.connect('servidor', 'usuario, 'senha', banco')
c = db.cursor()
c.execute('select codcet, razao, contato from banco.dbo. clientes order
by 2')
output = template('tpl_clientes', rows=c.fetchall()) # <---- Aqui eu
retorno o resultset e o template se encarrega de gerar a listagem lá normal
c.close()

O que eu gostaria é que o sistema já gerasse ali o resultset em forma de
JSON Object/Flat.

É possível?

Obrigado,


Rubens José Rodrigues





__________ Informação do ESET Endpoint Security, versão da vacina 11950
(20150716) __________

A mensagem foi verificada pelo ESET Endpoint Security.

Mensagem de email - esta OK

http://www.eset.com


Renzo Nuccitelli

unread,
Jul 16, 2015, 1:22:46 PM7/16/15
to python...@googlegroups.com, python...@yahoogrupos.com.br
O modelo de dados do App Engine[0] faz isso. Para realizar a tarefa, ele introspecta as propriedades, gerando o dicionário. Sendo assim, eu tentaria:

1) Ver se o framework que vc está conectando com o banco já fornece isso
2) Em caso negativo de um, ver se o framework deixa vc instrospectar os campos existentes e fazer um código que gere o dicionário para vc. Não se ajuda, mas da pra ver o fonte do ndb [1].


Abs,



--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
    python-brasi...@googlegroups.com

---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.
--
Renzo Nuccitelli

Eu leio email somente uma vez por dia. Se o assunto for urgente, me ligue.


Rodolfo De Nadai

unread,
Jul 17, 2015, 7:27:42 AM7/17/15
to python...@googlegroups.com, python...@yahoogrupos.com.br
Olha, não sei se te refresca alguma coisa. Como eu nunca trabalhei com o conector pymssql não sei se ele permite algo neste sentido, mas se ele retorna classes você pode usar a dica que o cara deu no stackoverflow ... chamar __dict__ para cada objeto e serializar o dicionário dos valores.
No caso faça uma classe wrapper que trata o retorno do resultado e converte para json ou qualquer outro formato que você achar necessário (ninguém sabe do futuro neh).

Tem mais idéias na thread: http://stackoverflow.com/a/3768975

Boa sorte!
Reply all
Reply to author
Forward
0 new messages