SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
XML-RPC + Python + Banco de Dados

          Fernando Massen

        15 de novembro de 2006




                                    1 / 33
Introdu¸˜o
       ca
Fernando
Objetivos
Python
XML
XML-RPC
SQL

Motiva¸˜o
      ca
Ponte com o Banco
de Dados            Introdu¸˜o
                           ca
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Mais informa¸oes
            c˜




                                 2 / 33
Fernando

Introdu¸˜o
       ca
Fernando
                    s   Desenvolvo software para backend corporativo
Objetivos           s   Tem um pouco de tudo, inclusive Python
Python
XML
                    s   Desde o Python 1.5, por´m usando de verdade a partir do
                                                e
XML-RPC                 2.1
SQL
                    s   Principalmente para tarefas onde o tempo ´ crucial
                                                                 e
Motiva¸˜o
      ca
Ponte com o Banco
                    s   Obviamente tamb´m por causa da facilidade
                                         e
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Mais informa¸oes
            c˜




                                                                              3 / 33
Objetivos

Introdu¸˜o
       ca
Fernando
                    s   Demonstrar o protocolo XML-RPC do ponto de vista do
Objetivos               desenvolvedor de aplica¸˜es.
                                               co
Python
XML
                    s   Mostrar a facilidade de programa¸˜o em Python.
                                                         ca
XML-RPC             s   Fornecer novas id´ias para desenvolvimento utilizando uma
                                          e
SQL
                        linguagem-ponte unica entre bancos de dados.
                                          ´
Motiva¸˜o
      ca
Ponte com o Banco
                    s   Juntar tudo isto: Python, SQL, XML e RPC.
de Dados            s   Distribuir um pequeno c´digo-exemplo que demonstra estes
                                                o
Proposta de
Gram´tica XML
     a                  acrˆnimos juntos.
                            o
para SQL
                    s   Se der tempo, demonstrar parte do c´digo.
                                                             o
XML-RPC

Mais informa¸oes
            c˜




                                                                               4 / 33
Python

Introdu¸˜o
       ca
Fernando
                    Mesmo que eu esteja apenas rezando para o clero, n˜o custa
                                                                      a
Objetivos           citar algumas virtudes do Python:
Python
XML                 s   Uma linguagem absurdamente f´cil de aprender
                                                         a
XML-RPC
SQL                 s   Tem uma implementa¸˜o de Orienta¸˜o a Objeto
                                               ca            ca
Motiva¸˜o
      ca                desburocratizada, apesar de incompleta
Ponte com o Banco   s   ´
                        E software livre – um grande diferencial em ambientes
de Dados
Proposta de             corporativos
Gram´tica XML
     a
para SQL
                    s   Roda em mais plataformas do que Java (pelo menos a
XML-RPC                 implementa¸˜o da Sun)
                                    ca
Mais informa¸oes
            c˜      s   ´ a
                        E f´cil de estender (criar novos m´dulos)
                                                           o
                    s   Vem com um mundo de funcionalidades j´ inclu´
                                                                  a    ıdo




                                                                                 5 / 33
XML

Introdu¸˜o
       ca
Fernando
                    ´
                    E aquele encoding de texto que todo mundo conhece.
Objetivos
Python              s   Apesar de repetitivo, ´ de f´cil entendimento para os seres
                                              e     a
XML
XML-RPC
                        humanos.
SQL                 s   A complexidade fica nas aplica¸oes, j´ que a mensagem n˜o
                                                        c˜    a                   a
Motiva¸˜o
      ca                cont´m inteligˆncia.
                            e         e
Ponte com o Banco
de Dados
                    s   Se utilizado um encoding de texto como UTF-8, deriva numa
Proposta de             mensagem praticamente universal.
Gram´tica XML
     a
para SQL            s   Pode significar qualquer coisa (ao mesmo tempo que n˜o  a
XML-RPC                 especifica o que significa).
Mais informa¸oes
            c˜      s   Apesar de suas desvantagens, sabemos que vai ficar.




                                                                               6 / 33
XML-RPC

Introdu¸˜o
       ca
Fernando
                    ´
                    E o meio de transporte escolhido para demonstrar a id´ia.
                                                                         e
Objetivos
Python              s   Poderia ter implementado esta ponte com sockets. Sim, mas:
XML
XML-RPC                 x   Demoraria mais para implementar. Isto tem que ser f´cil!
                                                                               a
SQL

Motiva¸˜o
      ca
Ponte com o Banco
                        x   N˜o ´ necess´rio mudar os designs de boa parte do
                              a e        a
de Dados                    c´digo ao trocar o transporte.
                             o
Proposta de
Gram´tica XML
     a                  x Teria que cuidar de v´rios aspectos que o XML-RPC faz
                                                 a
para SQL
                            sozinho.
XML-RPC

Mais informa¸oes
            c˜      s   ´
                        E um meio de transporte estupidamente f´cil de se
                                                                 a
                        implementar.
                    s   ´
                        E simples. Essa simplicidade tem a cara do Python.




                                                                                7 / 33
SQL

Introdu¸˜o
       ca
Fernando
                    Indispens´vel:
                              a
Objetivos               ´
                    s E uma linguagem funcional para manipula¸˜o de bancos de
                                                                  ca
Python
XML                     dados.
XML-RPC
SQL
                        ´
                    s E um padr˜o de facto.
                                    a
Motiva¸˜o
      ca            s Possui certas incompatibilidades entre fornecedores, mas as
Ponte com o Banco       diferen¸as s˜o contorn´veis atrav´s da aderˆncia de padr˜es
                                c    a         a          e         e           o
de Dados
Proposta de             (SQL92, SQL99, etc.) e de interfaces universalizadas (como
Gram´tica XML
     a
para SQL
                        esta!)
XML-RPC             s Ainda n˜o d´ para abandonar os bancos de dados relacionais
                                  a a
Mais informa¸oes
            c˜          para utilizar somente a orienta¸˜o a objeto:
                                                       ca
                       x   Acaba-se criando pontes OO-relacionais.
                       x   Ocorre convers˜o de dados entre v´rios tipos diversos.
                                         a                  a
                       x   BDs relacionais simplesmente funcionam! Est˜o a´
                                                                        a ı
                           implementados h´ mais d´cadas, inclusive, que a pr´pria
                                            a      e                          o
                           OO.

                                                                                8 / 33
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Uma interface unica
              ´
com Bancos de
Dados
N˜o h´ gram´ticas
  a a       a
XML para SQL no
W3C!
SQL tem a cara do
XML!
Ponte com o Banco
de Dados
                      Motiva¸˜o
                            ca
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Mais informa¸oes
            c˜




                                  9 / 33
Uma interface unica com Bancos de Dados
                                    ´

Introdu¸˜o
       ca
                      s   Criar especifica¸˜es para cada banco de dados ´ uma tarefa
                                         co                              e
Motiva¸˜o
      ca
Uma interface unica
              ´
                          penosa.
com Bancos de
Dados
                      s   Gerenciar as diferen¸as entre os engines no c´digo s´ com
                                              c                        o      o
N˜o h´ gram´ticas
  a a       a
XML para SQL no
                          SQL ´ um trabalho de S´
                               e                   ısifo.
W3C!
SQL tem a cara do
                      s   Mesmo assim, configurar acesso a banco de dados ´ de certa
                                                                             e
XML!                      forma complicado, e mudar isso mesmo que em
Ponte com o Banco
de Dados                  desenvolvimento gera tempo.
Proposta de
Gram´tica XML
     a
                      s   Manter SQL manualmente d´ chance a erros Hom´ricos.
                                                        a                   e
para SQL              s   O formato dos dados retornados ´ sempre peculiar a cada
                                                            e
XML-RPC                   linguagem. Tendo uma s´ maneira de retornar os dados
                                                    o
Mais informa¸oes
            c˜
                          permite que haja uma independˆncia total da
                                                          e
                          linguagem-cliente.




                                                                               10 / 33
N˜o h´ gram´ticas XML para SQL no W3C!
                       a a       a

Introdu¸˜o
       ca
                      s   No W3C, vive-se num tempo p´s-moderno em termos de
                                                          o
Motiva¸˜o
      ca
Uma interface unica
              ´
                          programa¸˜o: os sistemas teoricamente n˜o possuem legado,
                                    ca                              a
com Bancos de
Dados
                          tudo ´ tratado com mais e mais gram´ticas XML, movidas a
                                e                               a
N˜o h´ gram´ticas
  a a       a
XML para SQL no
                          Web Semˆntica.
                                    a
W3C!
SQL tem a cara do
                      s   XML serviria para trocas entre dados, n˜o para
                                                                  a
XML!                      processamento interno.
Ponte com o Banco
de Dados              s   Seria interessante como API de manipula¸˜o; n˜o ´ ` toa
                                                                    ca    a ea
Proposta de
Gram´tica XML
     a
                          que criaram-se facilidades como XML-RPC, SOAP, WSDL...
para SQL              s   Um grande potencial de processamento remoto e distribu´ıdo
XML-RPC                   n˜o est´ sendo utilizado.
                           a      a
Mais informa¸oes
            c˜
                      s   O ideal seria reescrever o SQL em XML, e “for¸ar” os
                                                                          c
                          fabricantes a adotar este padr˜o (utopias mil!)
                                                        a
                      s   Menos inconsistˆncias, menos retrabalho – hoje n˜o h´
                                           e                                a a
                          nenhuma vantagem inerente no SQL para fazer um Banco de
                          Dados vender mais do que o outro.


                                                                                11 / 33
SQL tem a cara do XML!

Introdu¸˜o
       ca
                      s   O SQL foi criado numa ´poca sem as possibilidades e
                                                   e
Motiva¸˜o
      ca
Uma interface unica
              ´
                          padr˜es da Web.
                               o
com Bancos de
Dados
                      s   Provavelmente, se fosse criado hoje, adotaria uma gram´tica
                                                                                   a
N˜o h´ gram´ticas
  a a       a
XML para SQL no
                          XML.
W3C!                  s   ´
                          E poss´ que seja ainda mais odiado.
                                 ıvel
SQL tem a cara do
XML!                  s   Possibilidades interessantes para os fabricantes poderiam ter
Ponte com o Banco
de Dados                  surgido: criar queries com “desenhistas de XML”, ou
Proposta de
Gram´tica XML
     a
                          derivando tabelas diretamente de nota¸oes como UML.
                                                                  c˜
para SQL              s   Para o sistema que vocˆ esteja criando, a quest˜o do banco
                                                  e                        a
XML-RPC                   de dados torna-se irrelevante.
Mais informa¸oes
            c˜




                                                                                   12 / 33
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Escolhi o
PostgreSQL
C´digo de conex˜o
 o             a
com BD
Proposta de
Gram´tica XML
     a
para SQL            Ponte com o Banco de Dados
XML-RPC

Mais informa¸oes
            c˜




                                                 13 / 33
Escolhi o PostgreSQL

Introdu¸˜o
       ca
                    s   Neste ponto utiliza-se um driver normal de banco de dados.
Motiva¸˜o
      ca
                        Escolhi um (pyPgSQL) que ´ bastante popular.
                                                     e
Ponte com o Banco
de Dados            s   Tenha em mente que coisas como triggers, views e coisas do
Escolhi o
PostgreSQL              gˆnero s˜o inerentes a cada banco de dados.
                         e       a
C´digo de conex˜o
 o             a
com BD              s   A manuten¸˜o do banco de dados n˜o ´ abordada pela
                                    ca                       a e
Proposta de             apresenta¸˜o. Imagino que o bom administrador saiba
                                  ca
Gram´tica XML
     a
para SQL                administrar seu banco de dados e tenha interfaces
XML-RPC                 apropriadas para o mesmo.
Mais informa¸oes
            c˜
                    s   Nada impediria de extender a “gram´tica” XML para a
                                                             a
                        administra¸˜o do pr´prio BD; por´m a´ ´ que moram as
                                   ca       o              e   ıe
                        maiores incompatibilidades entre os BDs e, portanto, os
                        maiores problemas.
                    s   Com o nosso exemplo de c´digo, bastaria adaptar duas ou
                                                   o
                        trˆs fun¸˜es `s sa´
                          e     co a      ıdas de drivers Python, e estaria pronto um
                        novo “driver”.


                                                                                 14 / 33
C´digo de conex˜o com BD
                     o             a

Introdu¸˜o
       ca
                    Usando pyPgSQL:
Motiva¸˜o
      ca
Ponte com o Banco   from pyPgSQL import libpq
de Dados            dbconn = libpq.PQconnectdb("host=dbserver
Escolhi o
PostgreSQL             dbname=python user=pguser")
C´digo de conex˜o
 o             a    ret = dbconn.query(sqlstream)
com BD
                    # ret ´ um objeto estilo ‘‘Resultset’’,
                          e
Proposta de
Gram´tica XML
     a              # com v´rias propriedades
                           a
para SQL
                    # se acontecer um erro, acontece antes disso
XML-RPC

Mais informa¸oes
            c˜




                                                                   15 / 33
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL
Limita¸oes
      c˜
Tipos de Dados
Recomend´veis
          a
SELECT: exemplo
                    Proposta de Gram´tica XML para SQL
                                    a
SELECT: resultado
INSERT
UPDATE
DELETE

XML-RPC

Mais informa¸oes
            c˜




                                                         16 / 33
Limita¸˜es
                          co

Introdu¸˜o
       ca
                    s   O XML aceita qualquer nota¸˜o; o que equivaleria a
                                                      ca
Motiva¸˜o
      ca
                        qualquer tipo de dados.
Ponte com o Banco
de Dados            s   O SQL n˜o – isso depende do fornecedor.
                                 a
Proposta de
Gram´tica XML
     a
                    s   Pelo menos alguns tipos de dados s˜o comuns entre os
                                                            a
para SQL                fornecedores de BD; ent˜o nivela-se por baixo: temos
                                                  a
Limita¸oes
      c˜
Tipos de Dados          n´meros inteiros, inteiros longos, n´meros decimais, datas,
                         u                                  u
Recomend´veis
          a
SELECT: exemplo         booleanos e strings.
SELECT: resultado   s   As datas podem ser representadas como inteiros longos,
INSERT
UPDATE                  baseados no conceito de epoch.
DELETE
                    s   As implementa¸˜es de booleano variam largamente. Uma
                                       co
XML-RPC
                        conven¸˜o ´ necess´ria: sugiro 0 para falso e qualquer outro
                               ca e         a
Mais informa¸oes
            c˜
                        valor para verdadeiro.
                    s   Os exemplos a seguir s˜o uma proposta do que ´ poss´
                                                a                       e     ıvel.




                                                                                17 / 33
Tipos de Dados Recomend´veis
                                           a

Introdu¸˜o
       ca
                    Praticamente todos os bancos de dados suportam, de alguma
Motiva¸˜o
      ca
                    forma, estes tipos de dados:
Ponte com o Banco
de Dados
                    s   int
Proposta de
Gram´tica XML
     a              s   long
para SQL
Limita¸oes
      c˜            s   string
Tipos de Dados
Recomend´veis
          a         s   dec
SELECT: exemplo     s   bool
SELECT: resultado
INSERT
UPDATE
                    O restante s˜o especializa¸˜es que n˜o s˜o comuns ` grande
                                a             co        a a           a
DELETE              maioria de aplica¸˜es existentes.
                                     co
XML-RPC

Mais informa¸oes
            c˜




                                                                                 18 / 33
SELECT: exemplo

Introdu¸˜o
       ca
                    <select>
Motiva¸˜o
      ca
                      <fields>
Ponte com o Banco
de Dados                 <field name="clientes.id" />
Proposta de              <field name="clientes.nome" />
Gram´tica XML
     a                   <field name="clientes.nascimento" />
para SQL
Limita¸oes
      c˜                 <field name="endereco.nome" as="endereco" />
Tipos de Dados        </fields>
Recomend´veis
          a
SELECT: exemplo
                      <froms>
SELECT: resultado        <table name="clientes">
INSERT                     <inner_join table="enderecos"
UPDATE
                              on="clientes.endereco=enderecos.id" />
DELETE
                         </table>
XML-RPC
                      </froms>
Mais informa¸oes
            c˜        <wheres>
                         <eq field="clientes.id"><int>3</int></eq>
                      </wheres>
                    </select>




                                                                        19 / 33
SELECT: resultado

Introdu¸˜o
       ca
                    Esta ´ uma proposi¸˜o de sa´ a esta query.
                         e            ca       ıda
Motiva¸˜o
      ca
Ponte com o Banco   <result>
de Dados              <row>
Proposta de              <id><int>50</int></id>
Gram´tica XML
     a
para SQL                 <nome><string>Jo~o da Esquina</string></nome>
                                         a
Limita¸oes
      c˜                 <nascimento>
Tipos de Dados
Recomend´veis
          a                 <variant>18/11/1980</variant>
SELECT: exemplo          </nascimento>
SELECT: resultado        <endereco><string>Rua sem N´mero</string></endereco>
                                                    u
INSERT
UPDATE
                      </row>
DELETE              </result>
XML-RPC

Mais informa¸oes
            c˜




                                                                                20 / 33
INSERT

Introdu¸˜o
       ca
                    <insert into="clientes">
Motiva¸˜o
      ca
                      <field name="id"><int>10</int></field>
Ponte com o Banco
de Dados              <field name="nome"><string>Jo~o da Costa</string></field>
                                                   a
Proposta de         </insert>
Gram´tica XML
     a
para SQL
Limita¸oes
      c˜            Ou ent˜o um INSERT com um SELECT dentro:
                          a
Tipos de Dados
Recomend´veis
          a
SELECT: exemplo
SELECT: resultado
INSERT
UPDATE
DELETE

XML-RPC

Mais informa¸oes
            c˜




                                                                              21 / 33
INSERT (cont.)

Introdu¸˜o
       ca
                    <insert into="clientes">
Motiva¸˜o
      ca
                      <fields>
Ponte com o Banco
de Dados                <field name="id" />
Proposta de             <field name="nome" />
Gram´tica XML
     a                </fields>
para SQL
Limita¸oes
      c˜              <select>
Tipos de Dados          <fields>
Recomend´veis
          a
SELECT: exemplo
                          <field name="id" />
SELECT: resultado         <field name="nome" />
INSERT                  </fields>
UPDATE
                        <froms>
DELETE
                          <table name="clientes" />
XML-RPC
                        </froms>
Mais informa¸oes
            c˜          <wheres>
                          <eq field="id"><int>15</int></eq>
                        </wheres>
                      </select>
                    </insert>



                                                              22 / 33
UPDATE

Introdu¸˜o
       ca
                    <update table="clientes">
Motiva¸˜o
      ca
                       <fields>
Ponte com o Banco
de Dados                  <field name="name"><string>Joao da Costa
Proposta de                 Netto</string></field>
Gram´tica XML
     a                 </fields>
para SQL
Limita¸oes
      c˜               <wheres>
Tipos de Dados            <eq field="id"><int>10</int></eq>
Recomend´veis
          a
SELECT: exemplo
                       </wheres>
SELECT: resultado   </update>
INSERT
UPDATE
DELETE

XML-RPC

Mais informa¸oes
            c˜




                                                                     23 / 33
DELETE

Introdu¸˜o
       ca
                    <delete table="clientes">
Motiva¸˜o
      ca
                       <wheres>
Ponte com o Banco
de Dados                  <eq field="id"><int>10</int></eq>
Proposta de            </wheres>
Gram´tica XML
     a              </delete>
para SQL
Limita¸oes
      c˜
Tipos de Dados
Recomend´veis
          a
SELECT: exemplo
SELECT: resultado
INSERT
UPDATE
DELETE

XML-RPC

Mais informa¸oes
            c˜




                                                              24 / 33
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC
Como funciona?
E em c´digo?
       o
(Servidor)
                    XML-RPC
E em c´digo?
       o
(Cliente)
No nosso caso,
juntando tudo

Mais informa¸oes
            c˜




                              25 / 33
Como funciona?

Introdu¸˜o
       ca
                    s   Primeiro, temos um servi¸o HTTP num servidor que
                                                 c
Motiva¸˜o
      ca
                        responde numa porta TCP espec´   ıfica.
Ponte com o Banco
de Dados            s   Codifica-se as fun¸˜es nesse servidor..
                                          co
Proposta de
Gram´tica XML
     a
                    s   Depois, registramos cada fun¸˜o que pode ser chamada por
                                                     ca
para SQL                um cliente.
XML-RPC
Como funciona?
                    s   Um cliente inicia um processo que executa fun¸˜es naquele
                                                                     co
E em c´digo?
       o
(Servidor)
                        servidor.
E em c´digo?
       o            s   Executa-se e avalia o resultado.
(Cliente)
No nosso caso,
juntando tudo

Mais informa¸oes
            c˜




                                                                              26 / 33
E em c´digo? (Servidor)
                          o

Introdu¸˜o
       ca
                    Este seria o c´digo de um suposto “server.py”.
                                  o
Motiva¸˜o
      ca
Ponte com o Banco   def ola_mundo():
de Dados               return "ola mundo-cliente!"
Proposta de
Gram´tica XML
     a
para SQL            import SimpleXMLRPCServer
XML-RPC             SimpleXMLRPCServer.allow_reuse_address = 1
Como funciona?      server = SimpleXMLRPCServer(("127.0.0.1", 10000))
E em c´digo?
       o
(Servidor)          server.register_function(ola_mundo)
E em c´digo?
       o            server.serve_forever() # d´ para matar com C-c tranquilo
                                              a
(Cliente)
No nosso caso,
juntando tudo

Mais informa¸oes
            c˜




                                                                               27 / 33
E em c´digo? (Cliente)
                          o

Introdu¸˜o
       ca
                    Este seria, ent˜o, um “client.py”.
                                   a
Motiva¸˜o
      ca
Ponte com o Banco   import xmlrpclib
de Dados            s = xmlrpclib.Server("ip_do_servidor", 10000)
Proposta de         print s.ola_mundo()
Gram´tica XML
     a
para SQL

XML-RPC             Executando:
Como funciona?
E em c´digo?
       o            $ python client.py
(Servidor)
E em c´digo?
       o            "ola mundo-cliente!"
(Cliente)
No nosso caso,
juntando tudo

Mais informa¸oes
            c˜




                                                                    28 / 33
No nosso caso, juntando tudo

Introdu¸˜o
       ca
                    s   O cliente acessa o servidor na porta 10000 no endere¸o IP
                                                                            c
Motiva¸˜o
      ca
                        desjado
Ponte com o Banco
de Dados            s   Chama a fun¸˜o execute, com um parˆmetro em XML
                                     ca                       a
Proposta de
Gram´tica XML
     a
                    s   O retorno vem em XML
para SQL            s   Simples assim. Isso d´ margem a v´rias id´ias:
                                              a            a      e
XML-RPC
Como funciona?          x Colocar uma ponte geradora de XML na
E em c´digo?
       o
(Servidor)                aplica¸˜o-cliente.
                                ca
E em c´digo?
       o
(Cliente)               x Balancear a carga entre v´rios servidores XML-RPC.
                                                    a
No nosso caso,
juntando tudo
                        x Fazer uma ponte entre um servidor de objetos, que seria
Mais informa¸oes
            c˜            o cliente nesta nossa solu¸˜o.
                                                    ca




                                                                               29 / 33
Introdu¸˜o
       ca

Motiva¸˜o
      ca
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Mais informa¸oes
              c˜
Esta id´ia j´ teve
       e a
                     Mais informa¸˜es
                                 co
implementa¸oes!
            c˜
O c´digo
   o
That’s all folks!




                                        30 / 33
Esta id´ia j´ teve implementa¸˜es!
                            e a                   co

Introdu¸˜o
       ca
                     s   XML-SQL Utility (XSU), da Oracle, que faz algo bem
Motiva¸˜o
      ca
                         parecido; por´m, ´ para o Oracle, e ´ mais voltado para
                                       e e                   e
Ponte com o Banco
de Dados                 extrair coisas do BD.
Proposta de
Gram´tica XML
     a
                     s   SQL Server exporta para XML tamb´m, mas n˜o ´ o caso.
                                                             e          a e
para SQL
                     s   Bom artigo de como fazer isso para MySQL:
XML-RPC
                         http://www.kitebird.com/articles/mysql-xml.html.
Mais informa¸oes
              c˜
Esta id´ia j´ teve
       e a           s   Existem iniciativas como o XPath que um dia ainda v˜oa
implementa¸oes!
            c˜
O c´digo
   o
                         implementar isso, pois j´ est˜o mesclando tudo na mesma
                                                 a    a
That’s all folks!        metodologia:
                         http://weblog.infoworld.com/udell/2003/03/12.html.




                                                                           31 / 33
O c´digo
                        o

Introdu¸˜o
       ca
                     s   O c´digo est´ dispon´ no endere¸o abaixo:
                            o        a       ıvel       c
Motiva¸˜o
      ca
Ponte com o Banco        http://slowhome.org/ferhr/tchelinux/
de Dados
Proposta de
Gram´tica XML
     a
                     s   Sob licen¸a BSD.
                                   c
para SQL             s   ´
                         E qualidade Alfa para Beta, ent˜o cuidado!
                                                        a
XML-RPC
                     s   Datas e outros tipos de dados aparecer˜o como <variant>,
                                                               a
Mais informa¸oes
              c˜
Esta id´ia j´ teve
       e a               s´ para irritar.
                          o
implementa¸oes!
            c˜
O c´digo
   o
                     s   Com exce¸˜o do driver, ´ escrito do zero.
                                    ca           e
That’s all folks!    s   Demorou dois dias para fazer, bem a tempo da palestra (´
                                                                                e
                         verdade que um dia foi s´ debugs).
                                                  o
                     s   Sacrifiquei a eficiˆncia e completude pela rapidez de
                                           e
                         desenvolvimento.
                     s   Vem com uma pequena su´ de testes, onde exemplos s˜o
                                                    ıte                        a
                         disparados.
                     s   Aceito contribui¸˜es.
                                          co


                                                                              32 / 33
That’s all folks!

Introdu¸˜o
       ca
                                 So long and thanks for all the queries!
Motiva¸˜o
      ca
                                        plan9ner@gmail.com
Ponte com o Banco
de Dados
Proposta de
Gram´tica XML
     a
para SQL

XML-RPC

Mais informa¸oes
              c˜
Esta id´ia j´ teve
       e a
implementa¸oes!
            c˜
O c´digo
   o
That’s all folks!




                                                                           33 / 33

Más contenido relacionado

La actualidad más candente (20)

Redes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de PacotesRedes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de Pacotes
 
ApresentaçãO Mpls
ApresentaçãO MplsApresentaçãO Mpls
ApresentaçãO Mpls
 
Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
Questoes
QuestoesQuestoes
Questoes
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Redes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IPRedes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IP
 
Redes Aavançadas - 5.MPLS
Redes Aavançadas - 5.MPLSRedes Aavançadas - 5.MPLS
Redes Aavançadas - 5.MPLS
 
Mpls e a engenharia de trafego
Mpls e a engenharia de trafegoMpls e a engenharia de trafego
Mpls e a engenharia de trafego
 
Modelo de camadas TCP/IP
Modelo de camadas TCP/IPModelo de camadas TCP/IP
Modelo de camadas TCP/IP
 
Artigo IPv6
Artigo IPv6Artigo IPv6
Artigo IPv6
 
Redes - TCP/IP
Redes - TCP/IPRedes - TCP/IP
Redes - TCP/IP
 
MPLS
MPLSMPLS
MPLS
 
Modelo tcpip
Modelo tcpipModelo tcpip
Modelo tcpip
 
Redes
RedesRedes
Redes
 
Piloto IPv6 - FCCN (1999)
Piloto IPv6 - FCCN (1999)Piloto IPv6 - FCCN (1999)
Piloto IPv6 - FCCN (1999)
 
Artigo ipv6
Artigo ipv6Artigo ipv6
Artigo ipv6
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes Linux
 
Ri a7
Ri a7Ri a7
Ri a7
 
Redes - Camada de Inter-Redes
Redes - Camada de Inter-RedesRedes - Camada de Inter-Redes
Redes - Camada de Inter-Redes
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exercicios
 

Similar a XML-RPC + Python + Banco de Dados - Fernando Massen

Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelAlessandro Kieras
 
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...Adriano Tavares
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosFabio Spanhol
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCEmbarcados
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3IP10
 
Congresso iv
Congresso ivCongresso iv
Congresso ivIP10
 
Aula 5 - Protocolos de comunicação
Aula 5 - Protocolos de comunicação Aula 5 - Protocolos de comunicação
Aula 5 - Protocolos de comunicação MaraLuizaGonalvesFre
 
Ensinando Qualidade de Serviço na Internet com o OPNET
Ensinando Qualidade de Serviço na Internet com o OPNETEnsinando Qualidade de Serviço na Internet com o OPNET
Ensinando Qualidade de Serviço na Internet com o OPNETAntonio Marcos Alberti
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoValore I/O
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAwolkartt_18
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Aula 11 redes de computadores - camada OSI e TCPIP pt1
Aula 11   redes de computadores - camada OSI e TCPIP pt1Aula 11   redes de computadores - camada OSI e TCPIP pt1
Aula 11 redes de computadores - camada OSI e TCPIP pt1Henrique Nunweiler
 

Similar a XML-RPC + Python + Banco de Dados - Fernando Massen (20)

XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache Camel
 
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...
Produtividade em integração de aplicações com apache camel tdc2012-são paulo-...
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
JPA INTRODUÇÃO
JPA INTRODUÇÃOJPA INTRODUÇÃO
JPA INTRODUÇÃO
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos Introdutórios
 
Linux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoCLinux e zephyr conversando no mesmo SoC
Linux e zephyr conversando no mesmo SoC
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3
 
Congresso iv
Congresso ivCongresso iv
Congresso iv
 
Aula 5 - Protocolos de comunicação
Aula 5 - Protocolos de comunicação Aula 5 - Protocolos de comunicação
Aula 5 - Protocolos de comunicação
 
Ensinando Qualidade de Serviço na Internet com o OPNET
Ensinando Qualidade de Serviço na Internet com o OPNETEnsinando Qualidade de Serviço na Internet com o OPNET
Ensinando Qualidade de Serviço na Internet com o OPNET
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programação
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNA
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Aula4 protocolos v2
Aula4 protocolos  v2Aula4 protocolos  v2
Aula4 protocolos v2
 
teAula3 protocolos v2
teAula3 protocolos  v2teAula3 protocolos  v2
teAula3 protocolos v2
 
Aula3 protocolos
Aula3 protocolosAula3 protocolos
Aula3 protocolos
 
Aula 11 redes de computadores - camada OSI e TCPIP pt1
Aula 11   redes de computadores - camada OSI e TCPIP pt1Aula 11   redes de computadores - camada OSI e TCPIP pt1
Aula 11 redes de computadores - camada OSI e TCPIP pt1
 
Sistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOASistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOA
 

Más de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Más de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

XML-RPC + Python + Banco de Dados - Fernando Massen

  • 1. XML-RPC + Python + Banco de Dados Fernando Massen 15 de novembro de 2006 1 / 33
  • 2. Introdu¸˜o ca Fernando Objetivos Python XML XML-RPC SQL Motiva¸˜o ca Ponte com o Banco de Dados Introdu¸˜o ca Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 2 / 33
  • 3. Fernando Introdu¸˜o ca Fernando s Desenvolvo software para backend corporativo Objetivos s Tem um pouco de tudo, inclusive Python Python XML s Desde o Python 1.5, por´m usando de verdade a partir do e XML-RPC 2.1 SQL s Principalmente para tarefas onde o tempo ´ crucial e Motiva¸˜o ca Ponte com o Banco s Obviamente tamb´m por causa da facilidade e de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 3 / 33
  • 4. Objetivos Introdu¸˜o ca Fernando s Demonstrar o protocolo XML-RPC do ponto de vista do Objetivos desenvolvedor de aplica¸˜es. co Python XML s Mostrar a facilidade de programa¸˜o em Python. ca XML-RPC s Fornecer novas id´ias para desenvolvimento utilizando uma e SQL linguagem-ponte unica entre bancos de dados. ´ Motiva¸˜o ca Ponte com o Banco s Juntar tudo isto: Python, SQL, XML e RPC. de Dados s Distribuir um pequeno c´digo-exemplo que demonstra estes o Proposta de Gram´tica XML a acrˆnimos juntos. o para SQL s Se der tempo, demonstrar parte do c´digo. o XML-RPC Mais informa¸oes c˜ 4 / 33
  • 5. Python Introdu¸˜o ca Fernando Mesmo que eu esteja apenas rezando para o clero, n˜o custa a Objetivos citar algumas virtudes do Python: Python XML s Uma linguagem absurdamente f´cil de aprender a XML-RPC SQL s Tem uma implementa¸˜o de Orienta¸˜o a Objeto ca ca Motiva¸˜o ca desburocratizada, apesar de incompleta Ponte com o Banco s ´ E software livre – um grande diferencial em ambientes de Dados Proposta de corporativos Gram´tica XML a para SQL s Roda em mais plataformas do que Java (pelo menos a XML-RPC implementa¸˜o da Sun) ca Mais informa¸oes c˜ s ´ a E f´cil de estender (criar novos m´dulos) o s Vem com um mundo de funcionalidades j´ inclu´ a ıdo 5 / 33
  • 6. XML Introdu¸˜o ca Fernando ´ E aquele encoding de texto que todo mundo conhece. Objetivos Python s Apesar de repetitivo, ´ de f´cil entendimento para os seres e a XML XML-RPC humanos. SQL s A complexidade fica nas aplica¸oes, j´ que a mensagem n˜o c˜ a a Motiva¸˜o ca cont´m inteligˆncia. e e Ponte com o Banco de Dados s Se utilizado um encoding de texto como UTF-8, deriva numa Proposta de mensagem praticamente universal. Gram´tica XML a para SQL s Pode significar qualquer coisa (ao mesmo tempo que n˜o a XML-RPC especifica o que significa). Mais informa¸oes c˜ s Apesar de suas desvantagens, sabemos que vai ficar. 6 / 33
  • 7. XML-RPC Introdu¸˜o ca Fernando ´ E o meio de transporte escolhido para demonstrar a id´ia. e Objetivos Python s Poderia ter implementado esta ponte com sockets. Sim, mas: XML XML-RPC x Demoraria mais para implementar. Isto tem que ser f´cil! a SQL Motiva¸˜o ca Ponte com o Banco x N˜o ´ necess´rio mudar os designs de boa parte do a e a de Dados c´digo ao trocar o transporte. o Proposta de Gram´tica XML a x Teria que cuidar de v´rios aspectos que o XML-RPC faz a para SQL sozinho. XML-RPC Mais informa¸oes c˜ s ´ E um meio de transporte estupidamente f´cil de se a implementar. s ´ E simples. Essa simplicidade tem a cara do Python. 7 / 33
  • 8. SQL Introdu¸˜o ca Fernando Indispens´vel: a Objetivos ´ s E uma linguagem funcional para manipula¸˜o de bancos de ca Python XML dados. XML-RPC SQL ´ s E um padr˜o de facto. a Motiva¸˜o ca s Possui certas incompatibilidades entre fornecedores, mas as Ponte com o Banco diferen¸as s˜o contorn´veis atrav´s da aderˆncia de padr˜es c a a e e o de Dados Proposta de (SQL92, SQL99, etc.) e de interfaces universalizadas (como Gram´tica XML a para SQL esta!) XML-RPC s Ainda n˜o d´ para abandonar os bancos de dados relacionais a a Mais informa¸oes c˜ para utilizar somente a orienta¸˜o a objeto: ca x Acaba-se criando pontes OO-relacionais. x Ocorre convers˜o de dados entre v´rios tipos diversos. a a x BDs relacionais simplesmente funcionam! Est˜o a´ a ı implementados h´ mais d´cadas, inclusive, que a pr´pria a e o OO. 8 / 33
  • 9. Introdu¸˜o ca Motiva¸˜o ca Uma interface unica ´ com Bancos de Dados N˜o h´ gram´ticas a a a XML para SQL no W3C! SQL tem a cara do XML! Ponte com o Banco de Dados Motiva¸˜o ca Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ 9 / 33
  • 10. Uma interface unica com Bancos de Dados ´ Introdu¸˜o ca s Criar especifica¸˜es para cada banco de dados ´ uma tarefa co e Motiva¸˜o ca Uma interface unica ´ penosa. com Bancos de Dados s Gerenciar as diferen¸as entre os engines no c´digo s´ com c o o N˜o h´ gram´ticas a a a XML para SQL no SQL ´ um trabalho de S´ e ısifo. W3C! SQL tem a cara do s Mesmo assim, configurar acesso a banco de dados ´ de certa e XML! forma complicado, e mudar isso mesmo que em Ponte com o Banco de Dados desenvolvimento gera tempo. Proposta de Gram´tica XML a s Manter SQL manualmente d´ chance a erros Hom´ricos. a e para SQL s O formato dos dados retornados ´ sempre peculiar a cada e XML-RPC linguagem. Tendo uma s´ maneira de retornar os dados o Mais informa¸oes c˜ permite que haja uma independˆncia total da e linguagem-cliente. 10 / 33
  • 11. N˜o h´ gram´ticas XML para SQL no W3C! a a a Introdu¸˜o ca s No W3C, vive-se num tempo p´s-moderno em termos de o Motiva¸˜o ca Uma interface unica ´ programa¸˜o: os sistemas teoricamente n˜o possuem legado, ca a com Bancos de Dados tudo ´ tratado com mais e mais gram´ticas XML, movidas a e a N˜o h´ gram´ticas a a a XML para SQL no Web Semˆntica. a W3C! SQL tem a cara do s XML serviria para trocas entre dados, n˜o para a XML! processamento interno. Ponte com o Banco de Dados s Seria interessante como API de manipula¸˜o; n˜o ´ ` toa ca a ea Proposta de Gram´tica XML a que criaram-se facilidades como XML-RPC, SOAP, WSDL... para SQL s Um grande potencial de processamento remoto e distribu´ıdo XML-RPC n˜o est´ sendo utilizado. a a Mais informa¸oes c˜ s O ideal seria reescrever o SQL em XML, e “for¸ar” os c fabricantes a adotar este padr˜o (utopias mil!) a s Menos inconsistˆncias, menos retrabalho – hoje n˜o h´ e a a nenhuma vantagem inerente no SQL para fazer um Banco de Dados vender mais do que o outro. 11 / 33
  • 12. SQL tem a cara do XML! Introdu¸˜o ca s O SQL foi criado numa ´poca sem as possibilidades e e Motiva¸˜o ca Uma interface unica ´ padr˜es da Web. o com Bancos de Dados s Provavelmente, se fosse criado hoje, adotaria uma gram´tica a N˜o h´ gram´ticas a a a XML para SQL no XML. W3C! s ´ E poss´ que seja ainda mais odiado. ıvel SQL tem a cara do XML! s Possibilidades interessantes para os fabricantes poderiam ter Ponte com o Banco de Dados surgido: criar queries com “desenhistas de XML”, ou Proposta de Gram´tica XML a derivando tabelas diretamente de nota¸oes como UML. c˜ para SQL s Para o sistema que vocˆ esteja criando, a quest˜o do banco e a XML-RPC de dados torna-se irrelevante. Mais informa¸oes c˜ 12 / 33
  • 13. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Escolhi o PostgreSQL C´digo de conex˜o o a com BD Proposta de Gram´tica XML a para SQL Ponte com o Banco de Dados XML-RPC Mais informa¸oes c˜ 13 / 33
  • 14. Escolhi o PostgreSQL Introdu¸˜o ca s Neste ponto utiliza-se um driver normal de banco de dados. Motiva¸˜o ca Escolhi um (pyPgSQL) que ´ bastante popular. e Ponte com o Banco de Dados s Tenha em mente que coisas como triggers, views e coisas do Escolhi o PostgreSQL gˆnero s˜o inerentes a cada banco de dados. e a C´digo de conex˜o o a com BD s A manuten¸˜o do banco de dados n˜o ´ abordada pela ca a e Proposta de apresenta¸˜o. Imagino que o bom administrador saiba ca Gram´tica XML a para SQL administrar seu banco de dados e tenha interfaces XML-RPC apropriadas para o mesmo. Mais informa¸oes c˜ s Nada impediria de extender a “gram´tica” XML para a a administra¸˜o do pr´prio BD; por´m a´ ´ que moram as ca o e ıe maiores incompatibilidades entre os BDs e, portanto, os maiores problemas. s Com o nosso exemplo de c´digo, bastaria adaptar duas ou o trˆs fun¸˜es `s sa´ e co a ıdas de drivers Python, e estaria pronto um novo “driver”. 14 / 33
  • 15. C´digo de conex˜o com BD o a Introdu¸˜o ca Usando pyPgSQL: Motiva¸˜o ca Ponte com o Banco from pyPgSQL import libpq de Dados dbconn = libpq.PQconnectdb("host=dbserver Escolhi o PostgreSQL dbname=python user=pguser") C´digo de conex˜o o a ret = dbconn.query(sqlstream) com BD # ret ´ um objeto estilo ‘‘Resultset’’, e Proposta de Gram´tica XML a # com v´rias propriedades a para SQL # se acontecer um erro, acontece antes disso XML-RPC Mais informa¸oes c˜ 15 / 33
  • 16. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL Limita¸oes c˜ Tipos de Dados Recomend´veis a SELECT: exemplo Proposta de Gram´tica XML para SQL a SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 16 / 33
  • 17. Limita¸˜es co Introdu¸˜o ca s O XML aceita qualquer nota¸˜o; o que equivaleria a ca Motiva¸˜o ca qualquer tipo de dados. Ponte com o Banco de Dados s O SQL n˜o – isso depende do fornecedor. a Proposta de Gram´tica XML a s Pelo menos alguns tipos de dados s˜o comuns entre os a para SQL fornecedores de BD; ent˜o nivela-se por baixo: temos a Limita¸oes c˜ Tipos de Dados n´meros inteiros, inteiros longos, n´meros decimais, datas, u u Recomend´veis a SELECT: exemplo booleanos e strings. SELECT: resultado s As datas podem ser representadas como inteiros longos, INSERT UPDATE baseados no conceito de epoch. DELETE s As implementa¸˜es de booleano variam largamente. Uma co XML-RPC conven¸˜o ´ necess´ria: sugiro 0 para falso e qualquer outro ca e a Mais informa¸oes c˜ valor para verdadeiro. s Os exemplos a seguir s˜o uma proposta do que ´ poss´ a e ıvel. 17 / 33
  • 18. Tipos de Dados Recomend´veis a Introdu¸˜o ca Praticamente todos os bancos de dados suportam, de alguma Motiva¸˜o ca forma, estes tipos de dados: Ponte com o Banco de Dados s int Proposta de Gram´tica XML a s long para SQL Limita¸oes c˜ s string Tipos de Dados Recomend´veis a s dec SELECT: exemplo s bool SELECT: resultado INSERT UPDATE O restante s˜o especializa¸˜es que n˜o s˜o comuns ` grande a co a a a DELETE maioria de aplica¸˜es existentes. co XML-RPC Mais informa¸oes c˜ 18 / 33
  • 19. SELECT: exemplo Introdu¸˜o ca <select> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="clientes.id" /> Proposta de <field name="clientes.nome" /> Gram´tica XML a <field name="clientes.nascimento" /> para SQL Limita¸oes c˜ <field name="endereco.nome" as="endereco" /> Tipos de Dados </fields> Recomend´veis a SELECT: exemplo <froms> SELECT: resultado <table name="clientes"> INSERT <inner_join table="enderecos" UPDATE on="clientes.endereco=enderecos.id" /> DELETE </table> XML-RPC </froms> Mais informa¸oes c˜ <wheres> <eq field="clientes.id"><int>3</int></eq> </wheres> </select> 19 / 33
  • 20. SELECT: resultado Introdu¸˜o ca Esta ´ uma proposi¸˜o de sa´ a esta query. e ca ıda Motiva¸˜o ca Ponte com o Banco <result> de Dados <row> Proposta de <id><int>50</int></id> Gram´tica XML a para SQL <nome><string>Jo~o da Esquina</string></nome> a Limita¸oes c˜ <nascimento> Tipos de Dados Recomend´veis a <variant>18/11/1980</variant> SELECT: exemplo </nascimento> SELECT: resultado <endereco><string>Rua sem N´mero</string></endereco> u INSERT UPDATE </row> DELETE </result> XML-RPC Mais informa¸oes c˜ 20 / 33
  • 21. INSERT Introdu¸˜o ca <insert into="clientes"> Motiva¸˜o ca <field name="id"><int>10</int></field> Ponte com o Banco de Dados <field name="nome"><string>Jo~o da Costa</string></field> a Proposta de </insert> Gram´tica XML a para SQL Limita¸oes c˜ Ou ent˜o um INSERT com um SELECT dentro: a Tipos de Dados Recomend´veis a SELECT: exemplo SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 21 / 33
  • 22. INSERT (cont.) Introdu¸˜o ca <insert into="clientes"> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="id" /> Proposta de <field name="nome" /> Gram´tica XML a </fields> para SQL Limita¸oes c˜ <select> Tipos de Dados <fields> Recomend´veis a SELECT: exemplo <field name="id" /> SELECT: resultado <field name="nome" /> INSERT </fields> UPDATE <froms> DELETE <table name="clientes" /> XML-RPC </froms> Mais informa¸oes c˜ <wheres> <eq field="id"><int>15</int></eq> </wheres> </select> </insert> 22 / 33
  • 23. UPDATE Introdu¸˜o ca <update table="clientes"> Motiva¸˜o ca <fields> Ponte com o Banco de Dados <field name="name"><string>Joao da Costa Proposta de Netto</string></field> Gram´tica XML a </fields> para SQL Limita¸oes c˜ <wheres> Tipos de Dados <eq field="id"><int>10</int></eq> Recomend´veis a SELECT: exemplo </wheres> SELECT: resultado </update> INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 23 / 33
  • 24. DELETE Introdu¸˜o ca <delete table="clientes"> Motiva¸˜o ca <wheres> Ponte com o Banco de Dados <eq field="id"><int>10</int></eq> Proposta de </wheres> Gram´tica XML a </delete> para SQL Limita¸oes c˜ Tipos de Dados Recomend´veis a SELECT: exemplo SELECT: resultado INSERT UPDATE DELETE XML-RPC Mais informa¸oes c˜ 24 / 33
  • 25. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Como funciona? E em c´digo? o (Servidor) XML-RPC E em c´digo? o (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 25 / 33
  • 26. Como funciona? Introdu¸˜o ca s Primeiro, temos um servi¸o HTTP num servidor que c Motiva¸˜o ca responde numa porta TCP espec´ ıfica. Ponte com o Banco de Dados s Codifica-se as fun¸˜es nesse servidor.. co Proposta de Gram´tica XML a s Depois, registramos cada fun¸˜o que pode ser chamada por ca para SQL um cliente. XML-RPC Como funciona? s Um cliente inicia um processo que executa fun¸˜es naquele co E em c´digo? o (Servidor) servidor. E em c´digo? o s Executa-se e avalia o resultado. (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 26 / 33
  • 27. E em c´digo? (Servidor) o Introdu¸˜o ca Este seria o c´digo de um suposto “server.py”. o Motiva¸˜o ca Ponte com o Banco def ola_mundo(): de Dados return "ola mundo-cliente!" Proposta de Gram´tica XML a para SQL import SimpleXMLRPCServer XML-RPC SimpleXMLRPCServer.allow_reuse_address = 1 Como funciona? server = SimpleXMLRPCServer(("127.0.0.1", 10000)) E em c´digo? o (Servidor) server.register_function(ola_mundo) E em c´digo? o server.serve_forever() # d´ para matar com C-c tranquilo a (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 27 / 33
  • 28. E em c´digo? (Cliente) o Introdu¸˜o ca Este seria, ent˜o, um “client.py”. a Motiva¸˜o ca Ponte com o Banco import xmlrpclib de Dados s = xmlrpclib.Server("ip_do_servidor", 10000) Proposta de print s.ola_mundo() Gram´tica XML a para SQL XML-RPC Executando: Como funciona? E em c´digo? o $ python client.py (Servidor) E em c´digo? o "ola mundo-cliente!" (Cliente) No nosso caso, juntando tudo Mais informa¸oes c˜ 28 / 33
  • 29. No nosso caso, juntando tudo Introdu¸˜o ca s O cliente acessa o servidor na porta 10000 no endere¸o IP c Motiva¸˜o ca desjado Ponte com o Banco de Dados s Chama a fun¸˜o execute, com um parˆmetro em XML ca a Proposta de Gram´tica XML a s O retorno vem em XML para SQL s Simples assim. Isso d´ margem a v´rias id´ias: a a e XML-RPC Como funciona? x Colocar uma ponte geradora de XML na E em c´digo? o (Servidor) aplica¸˜o-cliente. ca E em c´digo? o (Cliente) x Balancear a carga entre v´rios servidores XML-RPC. a No nosso caso, juntando tudo x Fazer uma ponte entre um servidor de objetos, que seria Mais informa¸oes c˜ o cliente nesta nossa solu¸˜o. ca 29 / 33
  • 30. Introdu¸˜o ca Motiva¸˜o ca Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ Esta id´ia j´ teve e a Mais informa¸˜es co implementa¸oes! c˜ O c´digo o That’s all folks! 30 / 33
  • 31. Esta id´ia j´ teve implementa¸˜es! e a co Introdu¸˜o ca s XML-SQL Utility (XSU), da Oracle, que faz algo bem Motiva¸˜o ca parecido; por´m, ´ para o Oracle, e ´ mais voltado para e e e Ponte com o Banco de Dados extrair coisas do BD. Proposta de Gram´tica XML a s SQL Server exporta para XML tamb´m, mas n˜o ´ o caso. e a e para SQL s Bom artigo de como fazer isso para MySQL: XML-RPC http://www.kitebird.com/articles/mysql-xml.html. Mais informa¸oes c˜ Esta id´ia j´ teve e a s Existem iniciativas como o XPath que um dia ainda v˜oa implementa¸oes! c˜ O c´digo o implementar isso, pois j´ est˜o mesclando tudo na mesma a a That’s all folks! metodologia: http://weblog.infoworld.com/udell/2003/03/12.html. 31 / 33
  • 32. O c´digo o Introdu¸˜o ca s O c´digo est´ dispon´ no endere¸o abaixo: o a ıvel c Motiva¸˜o ca Ponte com o Banco http://slowhome.org/ferhr/tchelinux/ de Dados Proposta de Gram´tica XML a s Sob licen¸a BSD. c para SQL s ´ E qualidade Alfa para Beta, ent˜o cuidado! a XML-RPC s Datas e outros tipos de dados aparecer˜o como <variant>, a Mais informa¸oes c˜ Esta id´ia j´ teve e a s´ para irritar. o implementa¸oes! c˜ O c´digo o s Com exce¸˜o do driver, ´ escrito do zero. ca e That’s all folks! s Demorou dois dias para fazer, bem a tempo da palestra (´ e verdade que um dia foi s´ debugs). o s Sacrifiquei a eficiˆncia e completude pela rapidez de e desenvolvimento. s Vem com uma pequena su´ de testes, onde exemplos s˜o ıte a disparados. s Aceito contribui¸˜es. co 32 / 33
  • 33. That’s all folks! Introdu¸˜o ca So long and thanks for all the queries! Motiva¸˜o ca plan9ner@gmail.com Ponte com o Banco de Dados Proposta de Gram´tica XML a para SQL XML-RPC Mais informa¸oes c˜ Esta id´ia j´ teve e a implementa¸oes! c˜ O c´digo o That’s all folks! 33 / 33