0% acharam este documento útil (0 voto)
9 visualizações17 páginas

Python SQLite - Aula 1

SQLite é um banco de dados leve e embutido que não requer servidor, ideal para aplicações simples. O módulo sqlite3 em Python permite criar conexões, executar comandos SQL e manipular dados com facilidade. O documento fornece exemplos práticos de como criar tabelas, inserir dados e boas práticas para evitar injeções SQL.

Enviado por

natanielrodri009
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
9 visualizações17 páginas

Python SQLite - Aula 1

SQLite é um banco de dados leve e embutido que não requer servidor, ideal para aplicações simples. O módulo sqlite3 em Python permite criar conexões, executar comandos SQL e manipular dados com facilidade. O documento fornece exemplos práticos de como criar tabelas, inserir dados e boas práticas para evitar injeções SQL.

Enviado por

natanielrodri009
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 17

SQLite é um banco de dados leve, autônomo e embutido que não requer um servidor para ser

executado. Ele é amplamente utilizado em aplicações que precisam de um banco de dados


simples e eficiente. Em Python, você pode usar o módulo integrado sqlite3 para interagir
com o SQLite.

Passos Básicos para Usar SQLite em Python

1. Importar o Módulo sqlite3 O módulo sqlite3 já vem com o Python por padrão.

2. Conectar ao Banco de Dados Use sqlite3.connect() para criar uma conexão


com o banco de dados. Se o banco de dados não existir, ele será criado.

3. Criar um Cursor O cursor é usado para executar comandos SQL.

4. Executar Comandos SQL Use o método execute() para executar comandos como
CREATE TABLE, INSERT, SELECT, etc.

5. Confirmar Alterações Após comandos como INSERT, UPDATE, ou DELETE, chame


commit() para salvar as alterações.

6. Fechar a Conexão Sempre feche a conexão com o banco de dados para liberar
recursos.
Exemplo de Uso

import sqlite3

# Conectar ao banco de dados (ou criar um novo)


conn = sqlite3.connect('example.db')

# Criar um cursor
cursor = conn.cursor()

# Criar uma tabela


cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

# Inserir dados
cursor.execute('''
INSERT INTO users (name, age)
VALUES ('Alice', 25), ('Bob', 30)
''')

# Confirmar alterações
conn.commit()

# Recuperar dados
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)

# Fechar a conexão
conn.close()
Principais Funções e Métodos

1. Conexão

○ sqlite3.connect('database_name.db'): Conecta ou cria o banco de


dados.
2. Cursor

○ cursor.execute(sql_query): Executa uma consulta SQL.


○ cursor.executemany(sql_query, data): Insere vários registros de uma
vez.
○ cursor.fetchall(): Retorna todos os resultados de uma consulta.
○ cursor.fetchone(): Retorna apenas o próximo registro.
3. Salvar e Fechar

○ conn.commit(): Salva as alterações feitas no banco de dados.


○ conn.close(): Fecha a conexão.

Vantagens do SQLite

● Simplicidade de configuração.
● Ideal para aplicações pequenas ou embarcadas.
● Armazenamento em um único arquivo.

Limitações do SQLite

● Não é adequado para aplicações de larga escala com múltiplos usuários simultâneos.
● Suporte limitado a operações complexas e altas cargas de transação.

Se você precisar de algo mais específico ou dicas sobre o uso avançado do SQLite, posso
ajudar!
O objeto Cursor no SQLite em Python é usado para interagir com o banco de dados. Ele é
criado a partir de uma conexão com o banco de dados e serve para executar comandos SQL e
manipular resultados. Vamos explorar as funcionalidades do objeto Cursor.

Como Criar um Cursor

Você cria um cursor a partir de uma conexão com o banco de dados:

import sqlite3

# Criar uma conexão


conn = sqlite3.connect('example.db')

# Criar um cursor
cursor = conn.cursor()

Principais Métodos do Objeto Cursor


1. execute(sql, params=None) Executa uma consulta ou comando SQL.

cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER, name


TEXT)')
cursor.execute('INSERT INTO users (id, name) VALUES (?, ?)', (1,
'Alice'))

2. executemany(sql, seq_of_params) Executa uma consulta ou comando SQL


várias vezes com diferentes parâmetros.
users = [(2, 'Bob'), (3, 'Charlie')]
cursor.executemany('INSERT INTO users (id, name) VALUES (?, ?)',
users)
3. fetchone() Retorna o próximo registro do resultado como uma tupla. Retorna None
se não houver mais registros.

cursor.execute('SELECT * FROM users')


print(cursor.fetchone()) # Retorna o primeiro registro

4. fetchall() Retorna todos os registros do resultado como uma lista de tuplas.

cursor.execute('SELECT * FROM users')


print(cursor.fetchall()) # Retorna todos os registros

5. fetchmany(size=n) Retorna até n registros do resultado como uma lista de tuplas.

cursor.execute('SELECT * FROM users')


print(cursor.fetchmany(2)) # Retorna os próximos 2 registros

6. rowcount Retorna o número de registros afetados pelo último comando INSERT,


UPDATE ou DELETE.

cursor.execute('DELETE FROM users WHERE id = 1')


print(cursor.rowcount) # Número de registros excluídos

7. description Contém metadados sobre as colunas do resultado. Cada entrada é uma


tupla com informações como o nome da coluna.
cursor.execute('SELECT * FROM users')
print(cursor.description) # Exibe os nomes das colunas
Exemplo Completo

import sqlite3

# Conectar ao banco de dados


conn = sqlite3.connect('example.db')

# Criar um cursor
cursor = conn.cursor()

# Criar uma tabela


cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
''')

# Inserir dados
users = [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]
cursor.executemany('INSERT INTO users (id, name) VALUES (?, ?)',
users)

# Consultar dados
cursor.execute('SELECT * FROM users')

# Iterar sobre os resultados


for row in cursor.fetchall():
print(row)

# Recuperar apenas uma linha


cursor.execute('SELECT * FROM users WHERE id = 1')
print(cursor.fetchone())

# Fechar a conexão
conn.commit()
conn.close()
Cuidados ao Usar o Cursor

1. Fechar a Conexão: Sempre feche a conexão após o uso (conn.close()).


2. Injeção SQL: Use parâmetros (?) em vez de concatenar strings SQL diretamente para
evitar vulnerabilidades de injeção SQL.
3. Persistência do Cursor: O cursor deve ser associado a uma conexão aberta. Se a
conexão for fechada, o cursor será inválido.

O objeto Cursor é central para trabalhar com bancos de dados em SQLite. Ele é eficiente para
realizar operações como leitura, escrita e manipulação de dados. Se precisar de algo mais
avançado, é só pedir!
Criar uma tabela no SQLite usando Python envolve o uso de comandos SQL no objeto
Cursor. O comando SQL padrão para criar tabelas é o CREATE TABLE. Aqui está um guia
completo para criar tabelas no SQLite com Python:

Passos para Criar uma Tabela

1. Importar o módulo sqlite3: O módulo sqlite3 é integrado ao Python.

2. Conectar ao Banco de Dados: Use sqlite3.connect() para criar ou abrir um


banco de dados.

3. Criar um Cursor: O cursor executará os comandos SQL.

4. Executar o Comando CREATE TABLE: Use o método execute() para executar a


instrução de criação de tabela.

5. Confirmar Alterações e Fechar a Conexão: Use commit() para salvar as alterações


no banco de dados e close() para liberar os recursos.
Exemplo Simples

import sqlite3

# Conectar ao banco de dados (ou criar um novo arquivo se não


existir)
conn = sqlite3.connect('example.db')

# Criar um cursor
cursor = conn.cursor()

# Criar uma tabela


cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
age INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')

# Confirmar as alterações
conn.commit()

# Fechar a conexão
conn.close()

Explicação do Exemplo

● CREATE TABLE IF NOT EXISTS: Garante que a tabela seja criada apenas se não
existir.
● Colunas da Tabela:
○ id INTEGER PRIMARY KEY AUTOINCREMENT: Coluna de ID única e
incremental.
○ name TEXT NOT NULL: Nome como texto obrigatório.
○ email TEXT UNIQUE NOT NULL: Email como texto obrigatório e único.
○ age INTEGER: Idade como número inteiro.
○ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP: Data/hora de
criação com valor padrão.

Exemplo com Mais Tabelas

Você pode criar várias tabelas no mesmo banco de dados:

import sqlite3

conn = sqlite3.connect('store.db')
cursor = conn.cursor()

# Criar tabela de produtos


cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
stock INTEGER NOT NULL
)
''')

# Criar tabela de vendas


cursor.execute('''
CREATE TABLE IF NOT EXISTS sales (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_id INTEGER NOT NULL,
quantity INTEGER NOT NULL,
sale_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(id)
)
''')

conn.commit()
conn.close()
Boas Práticas ao Criar Tabelas

1. Use IF NOT EXISTS: Evita erros ao executar o código várias vezes.

2. Chaves Primárias: Inclua sempre uma coluna de chave primária para identificar
registros.

3. Tipos de Dados: SQLite aceita os tipos básicos: INTEGER, TEXT, REAL, BLOB, NULL.

4. Integridade Referencial: Use chaves estrangeiras (FOREIGN KEY) para relacionar


tabelas.
Para inserir dados em uma tabela SQLite usando Python, você pode usar o método
execute() ou executemany() do objeto Cursor. Aqui está um guia completo sobre como
inserir dados no SQLite:

Método 1: Inserir Dados com execute()

O método execute() é usado para inserir um único registro por vez.

Exemplo

import sqlite3

# Conectar ao banco de dados


conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Inserir um único registro


cursor.execute('''
INSERT INTO users (name, email, age)
VALUES (?, ?, ?)
''', ('Alice', '[email protected]', 25))

# Confirmar as alterações
conn.commit()

# Fechar a conexão
conn.close()

Detalhes

● VALUES (?, ?, ?): Os ? são marcadores de posição que previnem injeções SQL.
● O segundo argumento de execute() é uma tupla com os valores correspondentes aos
marcadores.
Método 2: Inserir Múltiplos Dados com executemany()

Se você precisar inserir vários registros ao mesmo tempo, use o método executemany().

Exemplo

import sqlite3

# Conectar ao banco de dados


conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Dados a serem inseridos


users = [
('Bob', '[email protected]', 30),
('Charlie', '[email protected]', 22),
('Diana', '[email protected]', 28)
]

# Inserir múltiplos registros


cursor.executemany('''
INSERT INTO users (name, email, age)
VALUES (?, ?, ?)
''', users)

# Confirmar as alterações
conn.commit()

# Fechar a conexão
conn.close()
Método 3: Inserir Dados com Colunas Opcionais

Se sua tabela tiver colunas com valores padrão ou que aceitam NULL, você pode omitir essas
colunas na inserção.

Exemplo

cursor.execute('''
INSERT INTO users (name, email)
VALUES (?, ?)
''', ('Eve', '[email protected]'))

Nesse caso, a coluna age será NULL ou usará o valor padrão definido.

Boas Práticas ao Inserir Dados

1. Usar Marcadores de Posição (?): Sempre use marcadores de posição para evitar
vulnerabilidades de injeção SQL.

2. Confirmar Alterações: Use conn.commit() após inserir dados para salvar as


alterações no banco de dados.

3. Validar Dados: Antes de inserir, verifique se os dados atendem aos requisitos do banco
(e.g., valores únicos, tipos corretos).
Exemplo Completo com Criação de Tabela e Inserção

import sqlite3

# Conectar ao banco de dados


conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Criar a tabela
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
age INTEGER
)''')

# Inserir dados
users = [
('Alice', '[email protected]', 25),
('Bob', '[email protected]', 30),
('Charlie', '[email protected]', 22)]

cursor.executemany('''
INSERT INTO users (name, email, age)
VALUES (?, ?, ?)
''', users)

# Confirmar as alterações
conn.commit()

# Recuperar e exibir os dados inseridos


cursor.execute('SELECT * FROM users')
for row in cursor.fetchall():
print(row)

# Fechar a conexão
conn.close()
Exemplo de como inserir dados dinamicamente(esse trecho de um dos
meus projetos kkk)

import sqlite3

conn = sqlite3.connect("Database/estudantes.db")
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS estudantes(
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT,
classe INTEGER,
turma TEXT,
number INTEGER

''')
conn.commit()

def adicionarAluno():
nome = input("Digite o seu nome: ")
classe = int(input("Digite a sua classe(10ª-13ª): "))
turma = input("Digite a sua turma: ")
number = int(input("Digite o seu número: "))
cursor.execute("INSERT INTO estudantes (nome, classe, turma,
number) VALUES (?,?,?,?)", (nome, classe, turma, number,))
conn.commit()
print("Aluno registrado com sucesso!")

def menu():
while True:
print("\nMenu")
print("1. Adicionar estudante")
print("5. Sair")

escolha = input("Escolha a opção: ")


if escolha == '1':
adicionarAluno()
elif escolha == '5':
print("Saindo...")
break
else:
print("Opção inaceitável!")

menu()

conn.close()

Você também pode gostar