Capítulo 12 - Trabalhando com bancos de dados

Em muitas ocasiões você precisará que seus programas mantenham um conjunto de dados que possam ser reaproveitados entre várias execuções. Talvez você queira saber, por exemplo, se um determinado usuário é novo ou se já usou o seu programa anteriormente.

Abaixo, o programa conjugador de verbos, agora armazenando e buscando informações em um banco de dados MySQL:

#!/usr/bin/python 
# -*- coding: iso-8859-15 -*- 
# Programa que conjuga verbos regulares 
# versão 0.07 por Cesar Brod em 28/08/2013 
# variáveis iniciadas por "seu_" são fornecidas pelo usuário 
# variáveis terminadas por "_bd" tem origem na base de dados 
# Informações de conexão à base de dados: 
#     carrega a biblioteca de funções de acesso e manipulação de dados 
import MySQLdb 
#     informa os dados da conexão 
dados = MySQLdb.connect(host="192.168.1.104",  # endereço do servidor MySQL 
                        port=3306,             # porta usada na conexão 
                        user="root",           # usuário 
                        passwd="artista",      # senha 
                        db="conjuga")          # nome da base 
#     cria o cursor para a manipulação de dados 
cobra = dados.cursor() 
# Solicita informações do usuário 
seu_nome = raw_input("Digite seu primeiro nome: ") 
seu_sobrenome = raw_input("Digite seu último sobrenome: ") 
# Verifica se o usuário já existe na base 
existe = cobra.execute(("SELECT nome, sobrenome \ 
                         FROM usuario WHERE nome=%s AND sobrenome=%s"), 
                      (seu_nome, seu_sobrenome)) 
if existe > 0: 
    print 'Obrigado por usar novamente nosso conjugador, ' \ 
            + seu_nome + ' ' + seu_sobrenome 
else: 
    cobra.execute("INSERT INTO usuario (nome, sobrenome, visitas) \ 
               VALUES(%s, %s, %s)", (seu_nome, seu_sobrenome, 1)) 
    dados.commit() 
# Listas com as terminações de verbos regulares 
pessoas = ['Eu', 'Tu', 'Ele', 'Nós', 'Vós', 'Eles']; 
conjuga_ar = ['o', 'as', 'a', 'amos', 'ais', 'am']; 
conjuga_er = ['o', 'es', 'e', 'emos', 'eis', 'em']; 
conjuga_ir = ['o', 'es', 'e', 'imos', 'is', 'em']; 
print 'Conjugarei um verbo regular para você' 
print 
# O usuário informa o verbo 
seu_verbo = raw_input("Digite o infinitivo de um verbo regular: ") 
# Verifica a existência do verbo na base de dados 
existe = cobra.execute(("SELECT verbo \ 
                         FROM verbo WHERE verbo=%s"), 
                      (seu_verbo)) 
if existe > 0: 
    cobra.execute(("SELECT frequencia FROM verbo WHERE verbo=%s"), (seu_verbo)) 
    frequencia_bd = cobra.fetchone() 
    frequencia_bd = frequencia_bd[0]  # extrai o primeiro dado da tupla 
    print 'O verbo ' + seu_verbo + ' já foi conjugado ' + str(frequencia_bd) + ' vezes.' 
    cobra.execute("UPDATE verbo SET frequencia = %s WHERE verbo = %s", (frequencia_bd + 1, seu_verbo)) 
    dados.commit() 
else: 
    cobra.execute("INSERT INTO verbo (verbo, frequencia, regular) \ 
               VALUES(%s, %s, %s)", (seu_verbo, 1, 1)) 
    dados.commit() 
termina_em = seu_verbo[-2:]  # separa a terminação do verbo 
# De acordo com a terminação do verbo, conjugamos apropriadamente 
if termina_em == 'ar': 
    for i in range(6):  # repete seis vezes, percorrendo a lista 
        print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ar[i] 
elif termina_em == 'er': 
    for i in range(6):  # repete seis vezes, percorrendo a lista 
        print pessoas[i]+' '+seu_verbo[:-2]+conjuga_er[i] 
elif termina_em == 'ir': 
    for i in range(6):  # repete seis vezes, percorrendo a lista 
        print pessoas[i]+' '+seu_verbo[:-2]+conjuga_ir[i] 
else: 
    print 'Tem certeza que '+seu_verbo+' é um verbo regular?' 
dados.close()

Atenção: O serviço de compartilhamento utilizado para armazenar os arquivos desse livro, o UbuntuOne, foi descontinuado. O novo link para os arquivos referenciados no livro são os seguintes:

raquete.png
bola.png
imagem da máquina virtual
explode.tar.bz2
bolas.tar.bz2



Design: Dobro Comunicação. Desenvolvimento: Brod Tecnologia. Powered by Drupal