Python possui excelente suporte a banco de dados integrado em sua biblioteca padrão, para que você possa criar e interagir com um banco de dados sem depender de estruturas externas como o Django ORM.
SQLite é leve e fácil de integrar com Python. Descubra os princípios básicos da programação de banco de dados em Python com um aplicativo simples de registro de usuário.
últimas postagens
Como criar um banco de dados em Python
Para criar e interagir com um banco de dados em Python, você precisa de duas coisas principais: uma conexão e um cursor.
Uma conexão ajuda você a se conectar a um banco de dados existente ou a criar um novo. Veja como criar uma conexão de banco de dados em Python com SQLite:
import sqlite3
conn = sqlite3.connect('path/to/database.db')
conn.close()
O método connect() segue o caminho para um banco de dados existente. Se não houver banco de dados no caminho especificado, ele criará um. Você deve fechar a conexão com o banco de dados quando terminar de interagir com o banco de dados.
Um cursor ajuda você a interagir com o banco de dados conectado. Você usará um cursor para executar consultas SQL em seu programa Python. Veja como criar um cursor:
cursor = conn.cursor()
cursor.close()
Você pode criar um cursor chamando o método cursor() em um objeto de conexão aberta.
Como executar uma transação de banco de dados em Python
Usando um cursor, você pode executar instruções SQL, consultas ou scripts para ler ou gravar dados ou alterar a estrutura do banco de dados.
Existem três métodos principais que você pode usar para executar uma transação de banco de dados.
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
""")
Este código chama o método execute em um cursor, passando-lhe uma string contendo uma instrução SQL.
data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)
O código acima usa o método executemany para inserir valores no banco de dados várias vezes.
Note o ? espaços reservados na instrução SQL. O método executemany irá substituí-los pelos valores correspondentes para cada objeto.
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Como construir um aplicativo de registro com Python e SQLite3
A lógica por trás de um aplicativo de registro envolve obter as informações do usuário com Python e armazená-las em um banco de dados. Estas etapas mostrarão como criar um sistema de registro simples com Python e SQLite3.
Etapa 1: Conecte-se a um banco de dados existente ou crie um novo
Comece criando um banco de dados para seu aplicativo ou conectando-se a um já existente:
import sqlite3conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.close()
conn.close()
O código acima cria um objeto de conexão e um cursor para interagir com o banco de dados conectado.
Etapa 2: crie uma tabela para usuários
Você precisa de uma tabela para armazenar os dados que os usuários fornecerão ao se registrar. Veja como criar um com o cursor:
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
""")conn.commit()
Este código criará uma tabela chamada users se ela não existir em seu banco de dados. Ele cria quatro colunas na tabela para armazenar informações do usuário. O campo de email é exclusivo para evitar que os usuários criem várias contas com o mesmo email.
A chamada para conn.commit é importante para confirmar a consulta no banco de dados. Sem ele, não haverá alterações no banco de dados.
Se você usar o método executescript, poderá adicionar a palavra-chave COMMIT no final do arquivo SQL, para não precisar chamar conn.commit.
Etapa 3: coletar dados do usuário
As funções Python facilitam a reutilização de código, por isso é uma boa ideia criar uma função para lidar com o recurso de registro. Esta função coleta o nome, sobrenome, e-mail e senha do usuário.
def register_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
Etapa 4: verifique a exatidão da senha
Modifique a função Register_User para garantir que o usuário insira a mesma senha duas vezes. Caso contrário, você deve solicitar que digitem novamente a senha. Você pode conseguir isso com um loop como este:
def register_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")while True:
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
if password1 == password2:
print("You have successfully registered!")
break
else:
print("Your passwords must match")
Com esta alteração, um usuário não poderá se registrar, a menos que suas senhas correspondam.
Etapa 5: verifique a exclusividade do e-mail
A instrução SQL que cria a tabela de usuários define o campo email como exclusivo. Isso significa que o banco de dados retornará um erro se um usuário se inscrever com um email que já existe. Para agir adequadamente, você precisa lidar com a exceção do Python:
def register_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")while True:
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
if password1 == password2:
try:
print("You have successfully created an account.")
break
except sqlite3.IntegrityError:
print("Error: This email is already registered.")
else:
print("Your passwords must match.")
Este código usa o bloco try-except para lidar com o erro que ocorrerá com e-mails duplicados. Se o banco de dados gerar um IntegrityError, o loop while continuará, solicitando que o usuário insira um endereço de e-mail diferente.
Para este aplicativo de exemplo, é seguro presumir que um IntegrityError ocorrerá apenas como resultado de um endereço de e-mail duplicado. Em um aplicativo real, você provavelmente usará um tratamento de erros mais avançado para resolver outros problemas que possam ocorrer.
Etapa 6: Insira os dados do usuário no banco de dados
Agora que você coletou e verificou os dados do usuário, é hora de adicioná-los ao banco de dados. Você pode usar uma consulta SQL para fazer isso. Modifique seu bloco try-except assim:
try:
cursor.execute("""
INSERT INTO users (first_name, last_name, email, password)
VALUES (?, ?, ?, ?)
""", (first_name, last_name, email, password2))conn.commit()
print("You have successfully created an account.")
break
except sqlite3.IntegrityError:
print("Error: This email is already registered.")
No bloco try-except modificado, o cursor executa uma operação de inserção SQL. Finalmente, o método conn.commit confirma a operação SQL no banco de dados.
Se você seguiu todos os passos acima, deverá ter um aplicativo que registra usuários e os salva no banco de dados. Você pode usar um aplicativo como Navegador de banco de dados para SQLite para visualizar o conteúdo do seu banco de dados:
Usando bancos de dados em vez de tipos de coleção
Para bancos de dados simples, pode ser mais fácil criar seu próprio código. Entretanto, à medida que sua aplicação cresce e seu banco de dados se torna mais complexo, considere usar uma ferramenta como Django ORM para simplificar a tarefa.
Para continuar praticando suas habilidades de banco de dados de baixo nível, tente implementar um sistema de login para complementar o programa de registro.