SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Introdução ao SQLAlchemy
João Toss Molon (jtmolon@gmail.com)
Who?
● Graduando de Ciência da Computação na
Universidade de Caxias do Sul.
● Desenvolvedor Python/Zope/Plone na HaDi.
Com/Instituto Communitas/OTICS
● Baixista da Nantra =)
(facebook.com/bandanantra)
SQLAlchemy?
● Conjunto de ferramentas para integração de
bancos de dados relacionais e Python
Quem usa?
● Nós!
● E mais “alguns”...
SGBDs suportados
Posso usar para...
● Mapeamento Objeto-Relacional
● Acesso transparente ao banco através de
objetos, código Python puro
● Aplicação “multi-banco” (teoricamente...)
● Integração de produtos Plone com bancos
relacionais
Estrutura
Estrutura
● ORM (Object Relational Mapper)
○ Alto nível, mapeamento de classes Python para
tabelas do banco relacional
Estrutura
● Core
○ Linguagem de expressões SQL
○ Definição de schema
○ Conexão com o banco
Instalando
● Muito complexo
$easy_install SQLAlchemy
Instalou?
● Verificando se a instalação está ok
Conectando ao banco
● create_engine(string_conexao, echo)
○ string_conexao: SGBD, driver de conexão, usuario,
senha, host e nome do banco
Mapeando classes
● Extension declarative
○ declarative_base == base para mapeamento de
classes para tabelas
Mapeando classes
Mapeando classes
Criando as tabelas no banco
● Base.metadata.create_all(engine)
Instanciando um objeto
Criando uma sessão
● Session faz o controle da persistência de objetos
mapeados pelo ORM
○ Session = sessionmaker() #factory de sessions
○ Session.configure(bind=engine) #configura
conexao
○ session = Session() #nova session
Adicionando um objeto
● session.add(objeto) #adiciona o objeto
● session.new #lista os objetos novos
● session.dirty #lista os objetos modificados
● session.commit #persiste as modificações no banco
Consultando
● session.query(Classe).all() #lista com todos os objetos da
Classe
● session.query(Classe).first() #primeira ocorrência de um
objeto da Classe
● session.query(Classe).filter_by(campo=”dio”).all() #lista
de objetos filtrados por um campo com valor == ”dio”
Removendo
● Buscar o objeto e apagar
○ obj = session.query(Classe).filter_by(campo=”dio”).
first()
○ session.delete(obj)
Mas...funciona?
● Abre o terminal e mostra a que veio!
Fonte
● http://docs.sqlalchemy.org/en/rel_0_8/
Perguntas?

Mais conteúdo relacionado

Semelhante a Introdução ao SQLAlchemy ORM e mapeamento objeto-relacional

Implementando enterprise patterns com PHP
Implementando enterprise patterns com PHPImplementando enterprise patterns com PHP
Implementando enterprise patterns com PHPPablo Dall'Oglio
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
Python para análise de dados
Python para análise de dadosPython para análise de dados
Python para análise de dadosCaique Lima
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
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
 
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
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Thyago Maia
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com PythonHenrique Bastos
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 

Semelhante a Introdução ao SQLAlchemy ORM e mapeamento objeto-relacional (20)

Implementando enterprise patterns com PHP
Implementando enterprise patterns com PHPImplementando enterprise patterns com PHP
Implementando enterprise patterns com PHP
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 
Python para análise de dados
Python para análise de dadosPython para análise de dados
Python para análise de dados
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com 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
 
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
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Introdução ao Entity Framework 4
Introdução ao Entity Framework 4Introdução ao Entity Framework 4
Introdução ao Entity Framework 4
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com Python
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Canivete python
Canivete pythonCanivete python
Canivete python
 

Introdução ao SQLAlchemy ORM e mapeamento objeto-relacional