Trabalhando com Dados Estruturados, JSON, SQLite e Datas na Biblioteca Padrão do Python

O módulo csv permite ler e escrever arquivos de valores separados por vírgula de maneira simples. Se o arquivo não existir, ele será criado ao abrir em modo escrita.

import csv

with open("dados.csv", "w", encoding="utf-8", newline="") as f:
    escritor = csv.writer(f)
    escritor.writerow(["id", "produto", "preco"])
    escritor.writerow([1, "Notebook", 4500.00])
    escritor.writerow([2, "Mouse", 89.90])
    escritor.writerow([3, "Teclado", 199.99])

with open("dados.csv", encoding="utf-8") as f:
    leitor = csv.reader(f)
    conteudo = list(leitor)
    print(conteudo)

Módulo json

json.dumps() converte um objeto Python (dicionário, lista, string, número etc.) em uma string no formato JSON. O inverso é feito com json.loads().

import json
from pathlib import Path

dados = {
    "usuario": "maria_silva",
    "email": "maria@exemplo.com",
    "ativo": True,
    "interesses": ["Python", "Django", "SQL"]
}

texto_json = json.dumps(dados)
print(texto_json)

# Grava a string JSON em um arquivo
Path("config.json").write_text(texto_json, encoding="utf-8")

# Lê o conteúdo do arquivo e converte novamente para objeto Python
conteudo_arquivo = Path("config.json").read_text(encoding="utf-8")
objeto_recuperado = json.loads(conteudo_arquivo)
print(type(objeto_recuperado), objeto_recuperado)

Módulo sqlite3

O sqlite3 é um módulo da biblioteca padrão que fornece uma interface para interagir com bancos de dados SQLite. O SQLite é um banco leve, embarcado, que não exige um servidor separado. É adequado para aplicações de pequeno porte, mobile ou de desktop, embora não suporte recursos avançados como stored procedures.

Ferramentas gráficas como DB Browser for SQLite facilitam a visualização e edição do banco.

import sqlite3
import json
from pathlib import Path

# Supondo um arquivo "alunos.json" com uma lista de dicionários
alunos = json.loads(Path("alunos.json").read_text(encoding="utf-8"))

with sqlite3.connect("escola.db") as con:
    # Cria a tabela caso não exista
    con.execute("CREATE TABLE IF NOT EXISTS Alunos (id INTEGER, nome TEXT, curso TEXT)")
    
    sql = "INSERT INTO Alunos VALUES (?, ?, ?)"
    for aluno in alunos:
        con.execute(sql, (aluno["id"], aluno["nome"], aluno["curso"]))
    con.commit()

# Consulta simples percorrendo o cursor
with sqlite3.connect("escola.db") as con:
    resultado = con.execute("SELECT * FROM Alunos")
    for linha in resultado:
        print(linha)

# Obtendo todos os registros de uma vez como uma lista de tuplas
with sqlite3.connect("escola.db") as con:
    cursor = con.execute("SELECT * FROM Alunos")
    registros = cursor.fetchall()
    print(registros)

Módulo datetime

datetime permite representar, manipular e formatar datas e horários. strptime() transforma uma string em um objeto datetime, enquanto strftime() faz o caminho inverso. timedelta representa uma diferença entre datas e pode ser usada em operações aritméticas.

from datetime import datetime, timedelta

# Data fixa
inicio = datetime(2022, 5, 15)
print(inicio)

# Data e hora atuais
agora = datetime.now()
print(agora)

# Conversão a partir de string
data_convertida = datetime.strptime("2023/11/05", "%Y/%m/%d")
print(data_convertida)

# Cálculo de diferença
intervalo = agora - inicio
print(intervalo.days, "dias", intervalo.seconds, "segundos")

# Adicionando um timedelta
futuro = agora + timedelta(weeks=2, hours=3)
print(futuro)

Tags: Python CSV JSON sqlite3 datetime

Publicado em 10-4 20:21