Este documento apresenta SQLAlchemy, uma biblioteca Python para mapeamento objeto-relacional. Ele discute bancos de dados relacionais, SQL e como SQLAlchemy fornece uma camada de abstração sobre bancos de dados, permitindo manipulação de dados em Python com objetos. Um exemplo simples ilustra como modelar entidades e relacionamentos em uma aplicação usando SQLAlchemy.
2. Um pouco sobre mim
● Nome: Filipe Fernandes dos S B de Matos.
● Idade: 23 anos;
● Mestrando em Ciência da Computação pela
UECE (Primeiro Semestre);
● Graduando em Tecnologia em Telemática pelo
IFCE (9º semestre fatorial :D);
● Desenvolvedor Python à 3 anos;
● Sócio-fundador da Acens, onde trabalhei com
Python em alguns projetos;
3. Agenda
● Banco de dados relacionais;
● Linguagem SQL;
● SQLAlchemy;
● Como instalar;
● Um exemplo simples.
4. Banco de Dados Relacionais
● Coleção de tabelas, de nomes únicos;
● As tabelas e seus atributos relacionam-se entre si;
● Atavés desses relacionamentos, procura-se evitar a
duplicidade de dados;
● Especialização, generalização e associação;
● Chaves primárias coordenam a concatenação de
dados;
5. Banco de Dados Relacionais
● Relacionamentos possíveis:
● Um para um: Aluno/Matrícula;
● Um para muitos: Professor/Departamento;
● Muitos para muitos: Alunos/Disciplinas.
● Normalização garante eficiência nas pesquisa;
● Principais operações:
● Seleção, atualização e deleção de registros.
6. Linguagem SQL
● Inspirada na Álgebra Relacional;
● Linguagem DDL (Definição) + DML (Manipulação);
● A mais popular e mais utilizada;
● Possibilidade de interação com outras linguagens;
● Principais cláusulas:
● INSERT, UPDATE, DELETE, FROM, WHERE, ORDER
BY, GROUP BY, CREATE, ALTER, DROP, UNION,
JOIN, ...
7. Linguagem SQL
● SELECT m.marca, c.modelo, c.cor, c.valor FROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca AND c.valor between 20000 and 30000
● UPDATE Persons SET Address='Nissestien 67', City='Sandnes;
● DELETE * FROM Persons WHERE LastName='Tjessem' AND
FirstName='Jakob';
● CREATE TABLE customer (First_Name char(50), Last_Name char(50),
Address char(50), City char(50), Country char(25), Birth_Date date);
● SELECT m.marca, c.modelo, c.cor, c.valor FROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca AND c.valor between 20000 and 30000;
● SELECT m.marca, sum(c.valor) as total FROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca GROUP BY m.marca ORDER BY total
desc;
● DROP DATABASE bdexemplo;
8. SQLAlchemy
● "SQLAlchemy é uma biblioteca de mapeamento
objeto-relacional SQL em código aberto
desenvolvido para a linguagem de programação
Python e disponibilizado sobre a licença MIT."
● Versão mais atual: SQLAlchemy 0.7 Beta 1;
● Possui algumas extensões: Elixir, Migrate,
GeoAlchemy, Camelot...;
● Oferece suporte aos principais SGBDs do mercado.
9. SQLAlchemy
● “O principal objetivo do SQLAlchemy é mudar a
forma como você pensa sobre banco de dados e
SQL”;
● Fácil instalação;
● Camada de abstração colocada sobre o BD;
● Virtualização do banco de dados;
● Poder do SQL com a versatilidade do Python.
11. SQLAlchemy
● Mapeamento entre tabelas e classes Python;
● Objetos funcionam como registros;
● Facilidade de manipulação dos dados:
● Sessões oferecem abstrações do SQL.
● Mas sem esquecer dos métodos tradicionais:
● Possível utilizar comandos SQL direto.
12. Como instalar?
● 3 formas possíveis:
● Via easy_install:
– easy_install SQLAlchemy
● Via pip:
– pip install SQLAlchemy
● Baixando o pacote do site:
– python setup.py install
13. Um exemplo simples
“Os empregados de uma empresa de consultoria estão
distribuídos em departamentos. Cada trabalho captado pela
empresa constitui um projeto e a cada projeto estão
associados diversos empregados. Um empregado não pode
participar de mais de um projeto simultaneamente. Durante a
execução do projeto, um empregado o gerencia, denominado
gerente do projeto. Desenhe o DER deste sistema, supondo a
existência das seguintes classes de entidades e atributos:
● Empregado: matrícula do empregado, nome, nível e
departamento;
● Departamento: código do departamento e nome;
● Projeto: código do projeto, nome e gerente;
● Gerente: matrícula do gerente, código do projeto.”
14. Um exemplo simples
“Os empregados de uma empresa de consultoria estão
distribuídos em departamentos. Cada trabalho captado pela
empresa constitui um projeto e a cada projeto estão
associados diversos empregados. Um empregado não pode
participar de mais de um projeto simultaneamente. Durante a
execução do projeto, um empregado o gerencia, denominado
gerente do projeto. Desenhe o DER deste sistema, supondo a
existência das seguintes classes de entidades e atributos:
● Empregado: matrícula do empregado, nome, nível e
departamento;
● Departamento: código do departamento e nome;
● Projeto: código do projeto, nome e gerente;
● Gerente: matrícula do gerente, código do projeto.”