Python Com Banco de Dados
Python Com Banco de Dados
Apresentação
Propósito
Preparação
Objetivos
https://stecine.azureedge.net/repositorio/00212ti/00921/index.html?brand=w yden# 1/91
17/10/2024, 23:36 Python com banco de dados
Módulo 1
Módulo 2
Módulo 3
Módulo 4
meeting_room
Introdução
Olá! Vamos abordar alguns dos principais tópicos relacionados à
integração de programas escritos em Python e os SGBD mais
adotados. Veremos como realizar as conexões, criar tabelas,
relacionamentos e inserir novos registros no banco.
Download material
Conectores.
PEP 249
Python Database API Specification v2.0 - DB-API 2.0.
PEP
Python Enhancement Proposal.
Nomes de métodos
Close, commit e cursor.
Nomes de classes
Connection e Cursor.
Tipos de exceção
IntegrityError e InternalError.
settings_system_daydream psycopg2
cloud_done sqlite3
Psycopg2 expand_more
MySQLclient expand_more
PyMySQL expand_more
SQLite expand_more
Atividade 1
A MySQLclient
B PyMySQL
C psycopg2
E sqlite3
Atenção!
Connect expand_more
Connection expand_more
Principais métodos:
Cursor expand_more
Principais métodos:
Conectar
Executar
Enviar comandos
Criar tabelas.
Inserir linhas.
Selecionar linhas.
Confirmar
Fechar
Phyton
content_copy
Agora vamos revisar o código que criamos para interagir com o banco de
dados SQLite.
cloud_download Na linha 1
leak_add Na linha 4
ads_click Na linha 7
highlight_alt Na linha 10
settings_ethernet Na linha 11
dvr Na linha 14
Python
content_copy
Python content_copy
Comentário
Cada biblioteca tem suas particularidades, que podem atender a
funcionalidades específicas do banco de dados referenciado, mas todas
elas implementam, da mesma maneira, o básico para se trabalhar com
banco de dados. Isso é de grande utilidade, pois podemos alterar o
banco de dados a qualquer momento, sem a necessidade de realizar
muitas alterações no código-fonte.
Além dos métodos, a DB-API 2.0 prevê algumas exceções que podem ser
lançadas pelos conectores.
Error expand_more
IntegrityError expand_more
OperationalError expand_more
DatabaseError expand_more
ProgrammingError expand_more
NotSupportedError expand_more
Atividade 2
A rollback
B execute
C fetchall
D commit
E close
Tipos de dados
Para garantir a eficiência e integridade das aplicações, é importante
entender os tipos de dados usados em bancos de dados, como inteiros,
texto e ponto flutuante. Cada tipo tem características que afetam como
são armazenados e manipulados. Escolher os tipos certos melhora o
desempenho, facilita a manutenção e assegura a compatibilidade entre
diferentes SGBDs, sendo uma habilidade essencial no mercado.
Neste vídeo, você vai aprender sobre a importância dos tipos de dados
em bancos de dados e como eles impactam o armazenamento e a
eficiência das aplicações. Descubra os diferentes tipos, como INTEGER,
TEXT, REAL e BLOB, e como escolher o correto para garantir a integridade
e o desempenho dos seus sistemas.
NULL
INTEGER
REAL
https://stecine.azureedge.net/repositorio/00212ti/00921/index.html?brand=w yden# 18/91
17/10/2024, 23:36 Python com banco de dados
TEXT
BLOB
TEXT
NUMERIC
INTEGER
REAL
NONE
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT INTEGER
BIGINT
UNSIGNED BIG INT
INT2
INT8
CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
TEXT
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
BLOB BLOB
REAL REAL
DOUBLE
DOUBLE PRECISION
FLOAT
NUMERIC
DECIMAL(10,5)
BOOLEAN NUMERIC
DATE
DATETIME
Atividade 3
A INTEGER
B TEXT
C BLOB
D REAL
E NUMERIC
Phyton content_copy
Criando tabelas
Pessoa expand_more
Nome.
Marca expand_more
Nome.
Sigla.
Veículo expand_more
Cor.
CPF
Nome
Nascimento
Óculos
Para criar uma tabela que represente essa entidade, vamos utilizar o
comando SQL.
Definido o comando SQL, vamos ver como criar essa tabela em Python
no próximo exemplo.
Python content_copy
Na linha 1
Na linha 5
i i l á i d di ói
https://stecine.azureedge.net/repositorio/00212ti/00921/index.html?brand=w yden# 26/91
17/10/2024, 23:36 Python com banco de dados
existir, ele será criado no diretório
atual do script.
Na linha 6
Nas linhas 9 a 15
Na linha 17
Na linha 19
Efetivamos a transação
pendente utilizando o método
commit da variável conexão.
Nesse caso, a transação
pendente é a criação da tabela.
Nas linhas 22 e 23
Capturamos e tratamos a
exceção DatabaseError.
Nas linhas 28 e 29
Atenção!
Nos exemplos ao longo deste conteúdo, vamos utilizar a mesma
estrutura de código do script anterior, porém, vamos omitir as cláusulas
try/catch para fins de brevidade.
Id
Nome
Sigla
Para criar uma tabela que represente essa entidade, vamos utilizar o
comando SQL.
Python content_copy
Placa
Ano
Cor
Proprietário
Marca
Definido o comando SQL, vamos ver como criar essa tabela em Python
no exemplo a seguir.
Python content_copy
Dica
Caso a referência da chave estrangeira seja feita a um atributo
inexistente, será lançado um erro de programação: ProgrammingError.
Atividade 1
A INSERT TABLE
B DELETE TABLE
C UPDATE TABLE
D CREATE TABLE
E ALTER TABLE
O comando SQL CREATE TABLE é utilizado para criar uma nova tabela
no banco de dados, especificando os nomes das colunas e os tipos de
dados para cada coluna.
Python content_copy
Exemplo
Em algumas situações, as colunas precisam seguir uma ordem
específica. Um cenário comum é quando carregamos dados de uma
planilha diretamente para um banco de dados, para fazer uma inserção
em massa (bulk insert). Nesses casos, as colunas da planilha devem
estar na mesma ordem das colunas do banco.
Placa
Ano
Cor
Motor
Proprietário
Marca
Python content_copy
Modelo ER.
ORM
ORM (Object Relational Mapper) é uma mapeamento objeto-relacional, isto
é, uma técnica de mapeamento objeto relacional que permite fazer uma
Exemplo
Visite as páginas das bibliotecas SQLAlchemy e Peewee e veja como
elas facilitam a manipulação de registros em banco de dados.
Atividade 2
A CREATE COLUMN
B ALTER TABLE
C ADD COLUMN
D MODIFY TABLE
E UPDATE TABLE
Roteiro de prática
Objetivo
Python content_copy
Python
content_copy
Python content_copy
Bash content_copy
Resultado esperado
Atividade 3
Para criar uma tabela com uma chave estrangeira, a tabela referenciada
deve existir. Portanto, tentar criar a tabela de eventos antes da tabela de
locais resultaria em um erro, pois a referência à chave estrangeira não
seria encontrada.
Neste vídeo, você aprenderá a usar o comando SQL INSERT INTO para
inserir dados em tabelas de bancos de dados. Vamos abordar a sintaxe
correta e exemplos práticos para que suas aplicações possam adicionar
novos registros, mantendo seu banco de dados atualizado e funcional.
Confira!
CPF: 12345678900
Nome: João
Python
content_copy
Atividade 1
A UPDATE INTO
B INSERT INTO
C ADD INTO
D CREATE INTO
E SELECT INTO
Comentário
Python
content_copy
Python
content_copy
Comentário
O uso do delimitador de parâmetros, representado por uma interrogação
(?), serve para indicar ao método execute que alguns parâmetros serão
fornecidos, a fim de substituir essas interrogações por valores.
Dica
Atividade 2
A %s
B %n
C ?
D $
E &
Veja agora como poderia ficar a chamada do método execute para esse
comando.
Python
content_copy
Dica
Python content_copy
Console content_copy
Python content_copy
Python
content_copy
Atenção!
Comentário
Na linha 10, criamos um objeto do tipo Marca, que foi inserido no banco
pelo comando execute da linha 11.
Nas linhas 21 a 24, criamos quatro objetos do tipo Veículo. Observe que
utilizamos o atributo id dos objetos marca1 e marca2 para fazer
referência à marca do veículo. Os CPF dos proprietários foram
escolhidos aleatoriamente, baseando-se nos cadastros anteriores.
Atenção!
Atividade 3
A %s
B ¶m
C ?param
D :param
E #param
Phyton content_copy
Vamos alterar o valor do atributo óculos para zero (falso) para quem tem
CPF igual a 20000000099.
Atenção!
Python
content_copy
Atividade 4
A DELETE
B INSERT
D SELECT
E ALTER
Roteiro de prática
Objetivo
Python content_copy
Python content_copy
Python
content_copy
Python
content_copy
Bash content_copy
Resultado esperado
Atividade 5
Assim como nos outros comandos, podemos utilizar uma string sem
delimitadores, uma string com o delimitador “?” ou uma string com
argumentos nomeados para a condição da cláusula WHERE.
Python
content_copy
Observe que cada registro é uma tupla, composta pelos atributos nome e
óculos da entidade Pessoa. Os registros são sempre retornados em
Atenção!
Como o SQLite não cria uma transação para o comando SELECT, não é
necessário executar o commit.
Vamos criar agora uma consulta para retornar às pessoas que usam
óculos. Observe como ficou o exemplo.
Python
content_copy
Para cada registro retornado, que é uma tupla com os atributos CPF,
Nome, Nascimento e Óculos, nessa ordem, criamos um objeto do tipo
Pessoa na linha 14.
Comentário
Se estivéssemos utilizando o banco de dados PostgreSQL com o
conector psycopg2, como os tipos DATE e BOOLEAN são suportados,
esses valores seriam convertidos para o tipo correto.
Python
content_copy
Isso indica que o conector deve tentar fazer uma conversão dos dados,
tomando como base o tipo da coluna declarada no CREATE TABLE.
Comentário
Os tipos DATE e TIMESTAMP já possuem conversores embutidos no
sqlite3, porém o tipo BOOLEAN não. Para informar ao conector como
Atividade 1
A GROUP BY
B ORDER BY
C WHERE
D HAVING
E JOIN
Python
content_copy
help
E se quisermos substituir o
id das marcas pelos seus
respectivos nomes?
Resposta
Python
content_copy
Python content_copy
Script19_3.py.
Python content_copy
Script modelo.py.
Python content_copy
Script19_4.py.
Python
content_copy
Script20.py.
José
CAA0003 Marca B
Silva
DAA0004 Marca B
Essa função tem como parâmetro uma conexão e o CPF de uma pessoa.
Esse CPF será utilizado para filtrar os veículos que ela possui. Para isso,
utilizamos o delimitador “?” na linha 11 e passamos o cpf da pessoa
como argumento para o comando execute da linha 14.
Na linha 15, criamos uma lista vazia, chamada veículos. Essa lista será
povoada com os veículos recuperados pela consulta ao longo do laço for
das linhas 17 a 20.
Recomendação
Atividade 2
A UNION
B JOIN
C INTERSECT
D CONNECT
E MERGE
Roteiro de prática
Você foi contratado por uma livraria on-line para desenvolver um sistema
de gerenciamento de pedidos capaz de armazenar informações sobre
livros, clientes e pedidos.
Objetivo
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/00921/index.html?brand=w yden# 85/91
17/10/2024, 23:36 Python com banco de dados
Python content_copy
Python
content_copy
Defina uma função para inserir dados nas tabelas usando parâmetros
nomeados.
Python
content_copy
Python
content_copy
Python
content_copy
Bash
content_copy
Resultado esperado
Atividade 3
Explore +
Confira as indicações que separamos para você!
Referências
HIPP, R. D. SQLite. SQLite. Consultado na internet em: 8 out. 2020.
Download material
Relatar problema