SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Marcos Thomaz da Silva
PostgreSQL +Python/Django – Uma Parceria de
Sucesso
• Graduação em Sistemas de Informação
• Especialização em Bancos de Dados
• Analista de Tecnologia da Informação da Universidade Federal do Acre
• Desenvolvedor Clipper, Delphi, PHP e Python
• Participante e Moderador da Lista Django Brasil;
• Entusiasta PostgreSQL
Perfil do Instrutor
• Criada por Guido van Rossun no Instituto de Pesquisa Nacional para
Matemática e Ciência da Computação de Amsterdam;
• Nome originado da série britânica Monty Python Flying Circus;
• Lançada em 1991;
• Linguagem de alto nível;
• Interpretada;
• Gera bytecodes (pyc, pyo);
Python
• Multiplataforma;
Python
Python
• Endentação como delimitador de blocos;
• Possui Interpretador Interativo;
Python
• Tipagem dinâmica e forte;
Python
• Orientada a Objetos;
▫ Herança (inclusive herança múltipla);
▫ Polimorfismo;
▫ Suporte a metaclasse;
• Tratamento de Exceções;
• Trabalha nativamente com tipos “primitivos” e
estruturas complexas (listas, dicionários, tuplas);
• Introspecção (Reflection);
Python
Python
• Sobrecarga de operadores;
Python
• Jython
• CPython
• IronPython
• PyPy
• PyObjC (Mac OSX middleware)
• Python for Delphi
• Brython
Python - Interoperabilidade
• Geração de scripts;
▫ Suporte a administradores de redes;
▫ Apoio a outros sistema, etc;
• Acesso a bancos de dados;
▫ Suporte a praticamente todos os bancos de dados – excelente com
PostgreSQL (psycopg2);
• Desenvolvimento web;
▫ Existência de diversos frameworks: Django, Pyramid, Web2Py;
• Ferramenta de Gerenciamento de Conteúdo (Plone);
Onde / quando usar python
• Desenvolvimento Desktop;
▫ Uso de GTK, QT, wxWindow, etc;
• Diversos Editores de Código;
▫ Pagos: Pycharm, Sublime Text, Komodo, WingIDE, Ninja IDE;
▫ Livres: PyDev (Eclipse), Eric, Pida, Boa-Constructor, Notepad++, Vim;
• Desenvolvimento de ERP’s:
▫ OpenERP, Stoq;
• Desenvolvimento de Jogos:
▫ PyGame, PyOpenGL
Onde / quando usar python
• Área Científica: Scipy, NumPy;
• Aplicações Geo: Mapproxy (com Postgis);
• Inteligência Artificial;
• Animações 3D (Blender);
• Aplicativos Móveis ;
Onde / quando usar python
Python – Quem usa?
Python – Quem Usa
Python – Quem Usa
Python – site www.python.org
Python – site: www.python.org.br
Psycopg / Psycopg2
• É o mais popular adaptador Python para PostgreSQL;
• Oferece acesso a praticamente todos os recursos do PostgreSQL;
• Liberado sob os termos LGPL;
• Atualmente na versão 2.5.1;
• Multiplataforma;
• Instalação:
▫ Windows: Binário;
▫ Linux / Mac: Pacote;
Psycopg2
• Escrito a maior parte em C;
• Faz uso da libpq (objetivando melhor desempenho e segurança);
• Suporte a todas as versões do Python atuais;
• Suporte a todas as versões do PostgreSQL (acima da 7);
• Implementação totalmente compatível com as especificações de
adaptadores de Bancos de Dados Python;
• Thread-safe: as threads podem compartilhar a mesma conexão ou usar
conexões diferentes;
• Possui adaptação de diversos tipos de dados python;
Psycopg2
• Possui typecasters que convertem tipos do PostgreSQL para objetos
python;
• Possui cursores Server-Side;
• Suporte ao comando COPY;
• Pode enviar e receber notificações assíncronas;
• Suporta commit em duas fases;
• Permite a conversão de tipos decimal / numeric (PostgreSQL) para tipos
float ou Decimal (Python);
Psycopg2
• Conectando a uma base de dados
Psycopg2 – Alguns Exemplos
• Desconectando de uma base de dados
• Criando uma tabela e inserindo dados
Psycopg2 – Alguns Exemplos
• Alterando e excluindo registros de uma tabela
Psycopg2 – Alguns Exemplos
• Conversão de tipo automática e setar o encoding no cliente:
Psycopg2 – Alguns Exemplos
• Framework Web;
• Criado por Adrian Holovaty em 2005;
• Inicialmente seria apenas um gerenciador de notícias;
• Licença BSD;
• Nome inspirado no músico de jazz Django Reinhardt
• Escrito em Python
• Utiliza padrão MVC
• Conceito DRY
Django
• Possui ORM próprio;
▫ Acesso a diversos bancos;
 PostgreSQL;
 MySQL;
 Oracle;
 DB2;
 SQLServer;
▫ Permite multi-bancos;
▫ Permite herança;
▫ Classes Abstratas
Django - Recursos
• Possui ORM próprio;
▫ Chaves estrangeiras;
▫ Relações Many-To-Many;
▫ Indicação de índices únicos;
▫ Indicação de chaves primárias;
▫ Trabalha com arquivos;
▫ Permite métodos adicionais;
Django - Recursos
• Possui Sistema próprio de Templates
▫ Permite herança de templates;
▫ Permite condicionais: if;
▫ Permite iterações: for;
▫ Possui filtros especiais;
▫ Proteção contra tags especiais (html);
▫ Possui formatação de data;
▫ Internacionalização;
▫ Cache;
Django - Recursos
• Interface Administrativa muito poderosa e flexível;
▫ Permite o cadastro de usuários e grupos (especificando o acesso);
▫ Permite a criação de listagens com busca, filtros (inclusive por data) e
sintaxes adicionais;
Django - Recursos
• Integração com o PostGis (inclusive na Interface Administrativa);
▫ GeoDjango, MapProxy e Leaflet;
Django - Recursos
• Interface Administrativa
▫ CRUD Básico /Intermediário;
▫ Personalização de templates;
▫ Adição de recursos;
▫ Gerar modelos mestre-detalhe;
▫ Geração de Novos Widgets;
▫ Adição de Rotinas e Módulos (grapelly, django-admin-shortcut);
▫ Geração de ações e sistemas rápidos;
Django - Recursos
• Internacionalização;
• Cache por página, view ou consulta ;
▫ Memcached;
▫ Memória;
▫ Arquivos;
• Flatpages;
• Feeds;
• Coleta de Arquivos Estáticos;
• Envio de Email;
• Validação de URL’s de Recuperação de Email;
Django – Outros Recursos
• Geração de Log’s;
• Aplicações Plugáveis;
• Deploy Simplificado (FastCGI, WSGI);
• Compatibilidade com Servidores Web (Apache, nginx, lighthttpd,
cherokee, etc);
• Middleware;
• Multibanco;
• Class Based Views;
• E o mais importante... Simplicidade!
Django – Outros Recursos
Tudo muito legal mas....
E o PostgreSQL com isso??
• Conector python compatível com a maioria dos recursos do PostgreSQL;
• Conexão nativa / homologada com o ORM do Django;
• Possibilidade de execução segura de transações (incluindo em duas
fases);
• Proteção contra SQL Injection;
• Proteção contra CSRF;
• Proteção contra XSS;
Eis a razão....
• Conversão precisa e automática entre tipos do PostgreSQL para os tipos
do Python e vice-versa;
• Uso de Tablespaces;
• Uso de schemas (com aplicações plugáveis);
• Ampla documentação;
• Facilidade no Deploy;
• Simplicidade no Desenvolvimento;
Um pouco mais...
• Excelente desempenho;
• Geração de migrations;
• Geração de modelos a partir de bancos legados;
• Integração nativa com o Postgis;
• Interface administrativa com diversas funções;
• Integração da interface administrativa com o postgis;
• Soluções de suporte e complemento ao postgis (MapProxy, Mapnik);
• Ambiente Livre;
• Integração com Jquery, bootstrap, angularJS, Hightcarts;
E ainda mais...
• Cardápio RU (UFAC);
• Plano de Metas – 100 dias (UFAC);
Onde foi utilizado – Aplicações Pequenas
• Sistema de Busca de Documentos – Finder – (UFAC);
• Sistema de Pedidos - www.youtube.com/watch?v=emUXmvlGP0E
• Sistema Simulador de Financiamentos Imobiliários - CET
• Sistema de Protocolo – Ufac (Integração com DB2);
• SUAP – Usado por Institutos Federais (des. IFRN)
Onde foi utilizado – Aplicações Pequenas
• Sistema de Gestão Imobiliária – Cohab Acre;
• aQui Alli – Sistema Gerador de HotSites e catálogo online;
• Sistema de Registro de Projetos – UFAC;
• Sistema de Gestão de Processos Seletivos (gestão de 250 mil
candidatos registrados) – UFAC
• Sistema de Gestão Escolar – Ensino Médio – CAp/UFAC
• Diversos sites: http://www.djangosites.org/
Onde foi utilizado – Aplicações de Médio Porte
Obrigado!
Dúvidas??
Marcos Thomaz
marcosthomazs@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação PythonCarlos Schults
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoLuciano Ramalho
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 

Was ist angesagt? (20)

Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Python
PythonPython
Python
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 

Ähnlich wie PostgreSQL + Python/Django

PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCETiago Freire
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...iMasters
 
Usando Python na Google App Engine
Usando Python na Google App EngineUsando Python na Google App Engine
Usando Python na Google App EngineLuiz Cláudio Silva
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesjoanio trade
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3IP10
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonIP10
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Trabalho Remoto - Remote Job - #devitz2013
Trabalho Remoto - Remote Job - #devitz2013Trabalho Remoto - Remote Job - #devitz2013
Trabalho Remoto - Remote Job - #devitz2013Herson Leite
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDBVinicius de Sá
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxImpacta Eventos
 

Ähnlich wie PostgreSQL + Python/Django (20)

PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCE
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...Android DevConference - Elastic Search como ferramenta de busca em aplicações...
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
 
Usando Python na Google App Engine
Usando Python na Google App EngineUsando Python na Google App Engine
Usando Python na Google App Engine
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandes
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Congresso iii unifacsv3
Congresso iii unifacsv3Congresso iii unifacsv3
Congresso iii unifacsv3
 
Ampliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do PythonAmpliando os Horizontes dos Profissionais de Redes através do Python
Ampliando os Horizontes dos Profissionais de Redes através do Python
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Trabalho Remoto - Remote Job - #devitz2013
Trabalho Remoto - Remote Job - #devitz2013Trabalho Remoto - Remote Job - #devitz2013
Trabalho Remoto - Remote Job - #devitz2013
 
Geo dev ops
Geo dev opsGeo dev ops
Geo dev ops
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 

Mehr von Marcos Thomaz

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Marcos Thomaz
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresMarcos Thomaz
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa betaMarcos Thomaz
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento Marcos Thomaz
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do bancoMarcos Thomaz
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLMarcos Thomaz
 

Mehr von Marcos Thomaz (8)

Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
Hibridização de Métodos Exatos e Heurísticos para a Minimização do Atraso Pon...
 
Hydros - Apresentação para Investidores
Hydros - Apresentação para InvestidoresHydros - Apresentação para Investidores
Hydros - Apresentação para Investidores
 
Minimax e corte alfa beta
Minimax e corte alfa betaMinimax e corte alfa beta
Minimax e corte alfa beta
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 

PostgreSQL + Python/Django

  • 1. Marcos Thomaz da Silva PostgreSQL +Python/Django – Uma Parceria de Sucesso
  • 2. • Graduação em Sistemas de Informação • Especialização em Bancos de Dados • Analista de Tecnologia da Informação da Universidade Federal do Acre • Desenvolvedor Clipper, Delphi, PHP e Python • Participante e Moderador da Lista Django Brasil; • Entusiasta PostgreSQL Perfil do Instrutor
  • 3.
  • 4. • Criada por Guido van Rossun no Instituto de Pesquisa Nacional para Matemática e Ciência da Computação de Amsterdam; • Nome originado da série britânica Monty Python Flying Circus; • Lançada em 1991; • Linguagem de alto nível; • Interpretada; • Gera bytecodes (pyc, pyo); Python
  • 6. Python • Endentação como delimitador de blocos;
  • 7. • Possui Interpretador Interativo; Python
  • 8. • Tipagem dinâmica e forte; Python
  • 9. • Orientada a Objetos; ▫ Herança (inclusive herança múltipla); ▫ Polimorfismo; ▫ Suporte a metaclasse; • Tratamento de Exceções; • Trabalha nativamente com tipos “primitivos” e estruturas complexas (listas, dicionários, tuplas); • Introspecção (Reflection); Python
  • 11. • Sobrecarga de operadores; Python
  • 12.
  • 13. • Jython • CPython • IronPython • PyPy • PyObjC (Mac OSX middleware) • Python for Delphi • Brython Python - Interoperabilidade
  • 14. • Geração de scripts; ▫ Suporte a administradores de redes; ▫ Apoio a outros sistema, etc; • Acesso a bancos de dados; ▫ Suporte a praticamente todos os bancos de dados – excelente com PostgreSQL (psycopg2); • Desenvolvimento web; ▫ Existência de diversos frameworks: Django, Pyramid, Web2Py; • Ferramenta de Gerenciamento de Conteúdo (Plone); Onde / quando usar python
  • 15. • Desenvolvimento Desktop; ▫ Uso de GTK, QT, wxWindow, etc; • Diversos Editores de Código; ▫ Pagos: Pycharm, Sublime Text, Komodo, WingIDE, Ninja IDE; ▫ Livres: PyDev (Eclipse), Eric, Pida, Boa-Constructor, Notepad++, Vim; • Desenvolvimento de ERP’s: ▫ OpenERP, Stoq; • Desenvolvimento de Jogos: ▫ PyGame, PyOpenGL Onde / quando usar python
  • 16. • Área Científica: Scipy, NumPy; • Aplicações Geo: Mapproxy (com Postgis); • Inteligência Artificial; • Animações 3D (Blender); • Aplicativos Móveis ; Onde / quando usar python
  • 20. Python – site www.python.org
  • 21. Python – site: www.python.org.br
  • 23. • É o mais popular adaptador Python para PostgreSQL; • Oferece acesso a praticamente todos os recursos do PostgreSQL; • Liberado sob os termos LGPL; • Atualmente na versão 2.5.1; • Multiplataforma; • Instalação: ▫ Windows: Binário; ▫ Linux / Mac: Pacote; Psycopg2
  • 24. • Escrito a maior parte em C; • Faz uso da libpq (objetivando melhor desempenho e segurança); • Suporte a todas as versões do Python atuais; • Suporte a todas as versões do PostgreSQL (acima da 7); • Implementação totalmente compatível com as especificações de adaptadores de Bancos de Dados Python; • Thread-safe: as threads podem compartilhar a mesma conexão ou usar conexões diferentes; • Possui adaptação de diversos tipos de dados python; Psycopg2
  • 25. • Possui typecasters que convertem tipos do PostgreSQL para objetos python; • Possui cursores Server-Side; • Suporte ao comando COPY; • Pode enviar e receber notificações assíncronas; • Suporta commit em duas fases; • Permite a conversão de tipos decimal / numeric (PostgreSQL) para tipos float ou Decimal (Python); Psycopg2
  • 26. • Conectando a uma base de dados Psycopg2 – Alguns Exemplos • Desconectando de uma base de dados
  • 27. • Criando uma tabela e inserindo dados Psycopg2 – Alguns Exemplos
  • 28. • Alterando e excluindo registros de uma tabela Psycopg2 – Alguns Exemplos
  • 29. • Conversão de tipo automática e setar o encoding no cliente: Psycopg2 – Alguns Exemplos
  • 30.
  • 31. • Framework Web; • Criado por Adrian Holovaty em 2005; • Inicialmente seria apenas um gerenciador de notícias; • Licença BSD; • Nome inspirado no músico de jazz Django Reinhardt • Escrito em Python • Utiliza padrão MVC • Conceito DRY Django
  • 32. • Possui ORM próprio; ▫ Acesso a diversos bancos;  PostgreSQL;  MySQL;  Oracle;  DB2;  SQLServer; ▫ Permite multi-bancos; ▫ Permite herança; ▫ Classes Abstratas Django - Recursos
  • 33. • Possui ORM próprio; ▫ Chaves estrangeiras; ▫ Relações Many-To-Many; ▫ Indicação de índices únicos; ▫ Indicação de chaves primárias; ▫ Trabalha com arquivos; ▫ Permite métodos adicionais; Django - Recursos
  • 34. • Possui Sistema próprio de Templates ▫ Permite herança de templates; ▫ Permite condicionais: if; ▫ Permite iterações: for; ▫ Possui filtros especiais; ▫ Proteção contra tags especiais (html); ▫ Possui formatação de data; ▫ Internacionalização; ▫ Cache; Django - Recursos
  • 35. • Interface Administrativa muito poderosa e flexível; ▫ Permite o cadastro de usuários e grupos (especificando o acesso); ▫ Permite a criação de listagens com busca, filtros (inclusive por data) e sintaxes adicionais; Django - Recursos
  • 36. • Integração com o PostGis (inclusive na Interface Administrativa); ▫ GeoDjango, MapProxy e Leaflet; Django - Recursos
  • 37. • Interface Administrativa ▫ CRUD Básico /Intermediário; ▫ Personalização de templates; ▫ Adição de recursos; ▫ Gerar modelos mestre-detalhe; ▫ Geração de Novos Widgets; ▫ Adição de Rotinas e Módulos (grapelly, django-admin-shortcut); ▫ Geração de ações e sistemas rápidos; Django - Recursos
  • 38. • Internacionalização; • Cache por página, view ou consulta ; ▫ Memcached; ▫ Memória; ▫ Arquivos; • Flatpages; • Feeds; • Coleta de Arquivos Estáticos; • Envio de Email; • Validação de URL’s de Recuperação de Email; Django – Outros Recursos
  • 39. • Geração de Log’s; • Aplicações Plugáveis; • Deploy Simplificado (FastCGI, WSGI); • Compatibilidade com Servidores Web (Apache, nginx, lighthttpd, cherokee, etc); • Middleware; • Multibanco; • Class Based Views; • E o mais importante... Simplicidade! Django – Outros Recursos
  • 40. Tudo muito legal mas.... E o PostgreSQL com isso??
  • 41. • Conector python compatível com a maioria dos recursos do PostgreSQL; • Conexão nativa / homologada com o ORM do Django; • Possibilidade de execução segura de transações (incluindo em duas fases); • Proteção contra SQL Injection; • Proteção contra CSRF; • Proteção contra XSS; Eis a razão....
  • 42. • Conversão precisa e automática entre tipos do PostgreSQL para os tipos do Python e vice-versa; • Uso de Tablespaces; • Uso de schemas (com aplicações plugáveis); • Ampla documentação; • Facilidade no Deploy; • Simplicidade no Desenvolvimento; Um pouco mais...
  • 43. • Excelente desempenho; • Geração de migrations; • Geração de modelos a partir de bancos legados; • Integração nativa com o Postgis; • Interface administrativa com diversas funções; • Integração da interface administrativa com o postgis; • Soluções de suporte e complemento ao postgis (MapProxy, Mapnik); • Ambiente Livre; • Integração com Jquery, bootstrap, angularJS, Hightcarts; E ainda mais...
  • 44. • Cardápio RU (UFAC); • Plano de Metas – 100 dias (UFAC); Onde foi utilizado – Aplicações Pequenas
  • 45. • Sistema de Busca de Documentos – Finder – (UFAC); • Sistema de Pedidos - www.youtube.com/watch?v=emUXmvlGP0E • Sistema Simulador de Financiamentos Imobiliários - CET • Sistema de Protocolo – Ufac (Integração com DB2); • SUAP – Usado por Institutos Federais (des. IFRN) Onde foi utilizado – Aplicações Pequenas
  • 46. • Sistema de Gestão Imobiliária – Cohab Acre; • aQui Alli – Sistema Gerador de HotSites e catálogo online; • Sistema de Registro de Projetos – UFAC; • Sistema de Gestão de Processos Seletivos (gestão de 250 mil candidatos registrados) – UFAC • Sistema de Gestão Escolar – Ensino Médio – CAp/UFAC • Diversos sites: http://www.djangosites.org/ Onde foi utilizado – Aplicações de Médio Porte