Transcript
Page 1: Introdução ao SQLAlchemy

Introdução ao SQLAlchemy

João Toss Molon ([email protected])

Page 2: Introdução ao SQLAlchemy

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)

Page 3: Introdução ao SQLAlchemy

SQLAlchemy?

● Conjunto de ferramentas para integração de bancos de dados relacionais e Python

Page 4: Introdução ao SQLAlchemy

Quem usa?● Nós!

● E mais “alguns”...

Page 5: Introdução ao SQLAlchemy

SGBDs suportados

Page 6: Introdução ao SQLAlchemy

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

Page 7: Introdução ao SQLAlchemy

Estrutura

Page 8: Introdução ao SQLAlchemy

Estrutura● ORM (Object Relational Mapper)

○ Alto nível, mapeamento de classes Python para tabelas do banco relacional

Page 9: Introdução ao SQLAlchemy

Estrutura● Core

○ Linguagem de expressões SQL○ Definição de schema○ Conexão com o banco

Page 10: Introdução ao SQLAlchemy

Instalando

● Muito complexo

$easy_install SQLAlchemy

Page 11: Introdução ao SQLAlchemy

Instalou?● Verificando se a instalação está ok

Page 12: Introdução ao SQLAlchemy

Conectando ao banco● create_engine(string_conexao, echo)

○ string_conexao: SGBD, driver de conexão, usuario, senha, host e nome do banco

Page 13: Introdução ao SQLAlchemy

Mapeando classes● Extension declarative

○ declarative_base == base para mapeamento de classes para tabelas

Page 14: Introdução ao SQLAlchemy

Mapeando classes

Page 15: Introdução ao SQLAlchemy

Mapeando classes

Page 16: Introdução ao SQLAlchemy

Criando as tabelas no banco● Base.metadata.create_all(engine)

Page 17: Introdução ao SQLAlchemy

Instanciando um objeto

Page 18: Introdução ao SQLAlchemy

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

Page 19: Introdução ao SQLAlchemy

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

Page 20: Introdução ao SQLAlchemy

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”

Page 21: Introdução ao SQLAlchemy

Removendo● Buscar o objeto e apagar

○ obj = session.query(Classe).filter_by(campo=”dio”).first()

○ session.delete(obj)

Page 22: Introdução ao SQLAlchemy

Mas...funciona?

● Abre o terminal e mostra a que veio!

Page 23: Introdução ao SQLAlchemy

Fonte

● http://docs.sqlalchemy.org/en/rel_0_8/

Page 24: Introdução ao SQLAlchemy

Perguntas?