Pysqlite
Aprendendo SQL com CRUD no SQLite usando VS Code e Jupyter Notebook¶
O que é CRUD?¶
CRUD é um acrônimo que significa Create, Read, Update e Delete. São as quatro operações básicas que você pode realizar em um banco de dados:
- Create: Criar novos registros.
- Read: Ler dados existentes.
- Update: Atualizar dados existentes.
- Delete: Deletar dados.
Configurando o Ambiente¶
1. Instalar o VS Code:
- Se você ainda não tiver, baixe e instale o VS Code do site oficial: https://code.visualstudio.com/
2. Instalar a extensão Python:
- No VS Code, vá em Extensões (ícone da engrenagem na barra lateral esquerda) e procure por "Python". Instale a extensão oficial da Microsoft.
3. Criar um novo notebook Jupyter:
Abra o VS Code e crie um novo arquivo Python (
.py
).Na primeira linha, adicione:
Para criar o arquivo notebook, pressione Ctrl+Shift+P (ou Cmd+Shift+P no macOS) e digite "Create a New Jupyter Notebook".
4. Instalar a biblioteca sqlite3
:
Abra um terminal integrado no VS Code (Ctrl+`) e execute o seguinte comando:
pip install sqlite3
Recursos Úteis:
- Documentação do SQLite: https://www.sqlite.org/docs.html
- Documentação do Python: https://docs.python.org/3/
In [4]:
Copied!
# connect_db.py
# 01_create_db.py
import sqlite3
conn = sqlite3.connect('clientes.db')
conn.close()
# connect_db.py
# 01_create_db.py
import sqlite3
conn = sqlite3.connect('clientes.db')
conn.close()
In [5]:
Copied!
# 02_create_schema.py
import sqlite3
# conectando...
conn = sqlite3.connect('clientes.db')
# definindo um cursor
cursor = conn.cursor()
# criando a tabela (schema)
cursor.execute("""
CREATE TABLE clientesss (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER,
cpf VARCHAR(11) NOT NULL,
email TEXT NOT NULL,
fone TEXT,
cidade TEXT,
uf VARCHAR(2) NOT NULL,
criado_em DATE NOT NULL
);
""")
print('Tabela criada com sucesso.')
# desconectando...
conn.close()
# 02_create_schema.py
import sqlite3
# conectando...
conn = sqlite3.connect('clientes.db')
# definindo um cursor
cursor = conn.cursor()
# criando a tabela (schema)
cursor.execute("""
CREATE TABLE clientesss (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
idade INTEGER,
cpf VARCHAR(11) NOT NULL,
email TEXT NOT NULL,
fone TEXT,
cidade TEXT,
uf VARCHAR(2) NOT NULL,
criado_em DATE NOT NULL
);
""")
print('Tabela criada com sucesso.')
# desconectando...
conn.close()
Tabela criada com sucesso.
In [6]:
Copied!
# 03_create_data_sql.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# inserindo dados na tabela
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Regis', 35, '00000000000', 'regis@email.com', '11-98765-4321', 'Sao Paulo', 'SP', '2014-06-08')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Aloisio', 87, '11111111111', 'aloisio@email.com', '98765-4322', 'Porto Alegre', 'RS', '2014-06-09')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Bruna', 21, '22222222222', 'bruna@email.com', '21-98765-4323', 'Rio de Janeiro', 'RJ', '2014-06-09')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Matheus', 19, '33333333333', 'matheus@email.com', '11-98765-4324', 'Campinas', 'SP', '2014-06-08')
""")
# gravando no bd
conn.commit()
print('Dados inseridos com sucesso.')
conn.close()
# 03_create_data_sql.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# inserindo dados na tabela
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Regis', 35, '00000000000', 'regis@email.com', '11-98765-4321', 'Sao Paulo', 'SP', '2014-06-08')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Aloisio', 87, '11111111111', 'aloisio@email.com', '98765-4322', 'Porto Alegre', 'RS', '2014-06-09')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Bruna', 21, '22222222222', 'bruna@email.com', '21-98765-4323', 'Rio de Janeiro', 'RJ', '2014-06-09')
""")
cursor.execute("""
INSERT INTO clientesss (nome, idade, cpf, email, fone, cidade, uf, criado_em)
VALUES ('Matheus', 19, '33333333333', 'matheus@email.com', '11-98765-4324', 'Campinas', 'SP', '2014-06-08')
""")
# gravando no bd
conn.commit()
print('Dados inseridos com sucesso.')
conn.close()
Dados inseridos com sucesso.
In [8]:
Copied!
# 04_read_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# lendo os dados
cursor.execute("""
SELECT * FROM clientesss;
""")
for linha in cursor.fetchall():
print(linha)
conn.close()
# 04_read_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# lendo os dados
cursor.execute("""
SELECT * FROM clientesss;
""")
for linha in cursor.fetchall():
print(linha)
conn.close()
(1, 'Regis', 35, '00000000000', 'regis@email.com', '11-98765-4321', 'Sao Paulo', 'SP', '2014-06-08') (2, 'Aloisio', 87, '11111111111', 'aloisio@email.com', '98765-4322', 'Porto Alegre', 'RS', '2014-06-09') (3, 'Bruna', 21, '22222222222', 'bruna@email.com', '21-98765-4323', 'Rio de Janeiro', 'RJ', '2014-06-09') (4, 'Matheus', 19, '33333333333', 'matheus@email.com', '11-98765-4324', 'Campinas', 'SP', '2014-06-08')
In [9]:
Copied!
# 05_update_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
id_cliente = 1
novo_fone = '11-1000-2014'
novo_criado_em = '2014-06-11'
# alterando os dados da tabela
cursor.execute("""
UPDATE clientesss
SET fone = ?, criado_em = ?
WHERE id = ?
""", (novo_fone, novo_criado_em, id_cliente))
conn.commit()
print('Dados atualizados com sucesso.')
conn.close()
# 05_update_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
id_cliente = 1
novo_fone = '11-1000-2014'
novo_criado_em = '2014-06-11'
# alterando os dados da tabela
cursor.execute("""
UPDATE clientesss
SET fone = ?, criado_em = ?
WHERE id = ?
""", (novo_fone, novo_criado_em, id_cliente))
conn.commit()
print('Dados atualizados com sucesso.')
conn.close()
Dados atualizados com sucesso.
In [10]:
Copied!
# 07_delete_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
id_cliente = 3
# excluindo um registro da tabela
cursor.execute("""
DELETE FROM clientesss
WHERE id = ?
""", (id_cliente,))
conn.commit()
print('Registro excluido com sucesso.')
conn.close()
# 07_delete_data.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
id_cliente = 3
# excluindo um registro da tabela
cursor.execute("""
DELETE FROM clientesss
WHERE id = ?
""", (id_cliente,))
conn.commit()
print('Registro excluido com sucesso.')
conn.close()
Registro excluido com sucesso.
In [11]:
Copied!
# 09_alter_table.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# adicionando uma nova coluna na tabela clientes
cursor.execute("""
ALTER TABLE clientesss
ADD COLUMN bloqueado BOOLEAN;
""")
conn.commit()
print('Novo campo adicionado com sucesso.')
conn.close()
# 09_alter_table.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
# adicionando uma nova coluna na tabela clientes
cursor.execute("""
ALTER TABLE clientesss
ADD COLUMN bloqueado BOOLEAN;
""")
conn.commit()
print('Novo campo adicionado com sucesso.')
conn.close()
Novo campo adicionado com sucesso.
In [12]:
Copied!
# 10_view_table_info.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
nome_tabela = 'clientesss'
# obtendo informações da tabela
cursor.execute('PRAGMA table_info({})'.format(nome_tabela))
colunas = [tupla[1] for tupla in cursor.fetchall()]
print('Colunas:', colunas)
# ou
# for coluna in colunas:
# print(coluna)
# listando as tabelas do bd
cursor.execute("""
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name
""")
print('Tabelas:')
for tabela in cursor.fetchall():
print("%s" % (tabela))
# obtendo o schema da tabela
cursor.execute("""
SELECT sql FROM sqlite_master WHERE type='table' AND name=?
""", (nome_tabela,))
print('Schema:')
for schema in cursor.fetchall():
print("%s" % (schema))
conn.close()
# 10_view_table_info.py
import sqlite3
conn = sqlite3.connect('clientes.db')
cursor = conn.cursor()
nome_tabela = 'clientesss'
# obtendo informações da tabela
cursor.execute('PRAGMA table_info({})'.format(nome_tabela))
colunas = [tupla[1] for tupla in cursor.fetchall()]
print('Colunas:', colunas)
# ou
# for coluna in colunas:
# print(coluna)
# listando as tabelas do bd
cursor.execute("""
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name
""")
print('Tabelas:')
for tabela in cursor.fetchall():
print("%s" % (tabela))
# obtendo o schema da tabela
cursor.execute("""
SELECT sql FROM sqlite_master WHERE type='table' AND name=?
""", (nome_tabela,))
print('Schema:')
for schema in cursor.fetchall():
print("%s" % (schema))
conn.close()
Colunas: ['id', 'nome', 'idade', 'cpf', 'email', 'fone', 'cidade', 'uf', 'criado_em', 'bloqueado'] Tabelas: clientesss sqlite_sequence Schema: CREATE TABLE clientesss ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, idade INTEGER, cpf VARCHAR(11) NOT NULL, email TEXT NOT NULL, fone TEXT, cidade TEXT, uf VARCHAR(2) NOT NULL, criado_em DATE NOT NULL , bloqueado BOOLEAN)