Como tirar o shelve deste script?

1. Como tirar o shelve deste script?

Bruno Normandia
Brunonormandia

(usa Debian)

Enviado em 15/08/2007 - 17:57h

Olá!
Estou desenvolvendo um programa em python para gerenciamento de farmácia que espero que algum dia esteja 'aceitável'.
O que não estou conseguindo é mudar algum dado já adicionado.
ex>> se eu adiciono um remédio 'x' que custa R$10,00 e tem 5 unidades de estoque, como faço para caso precise mudar os valores antes já adicionados??
ae vai o script::

PS: pesquisei e vi que o uso do shelve faz incripitar os dados não dando possibilidade de mudá-los depois caso necessário. Daí (penso eu) que seja necessário retirá-lo, perdoem-me se estiver errado

ae vai o script>>

#Farmux 1.0 Beta 4
import shelve
db={}
db=shelve.open('./farmux.db')

def guardar(remedio,preco,estoque):
db[remedio]=preco,estoque
def armazenar(nome,divida):
db[nome]=divida
def listar():
lista=db.keys()
for i in lista:
print '%s ==> %s' %(i,db[i])

def menu():
print '\n Farmux 1.0 beta 4 \n'
print
print '1 - Adicionar nome'
print '2 - Listar devedores e remedios cadastrados'
print '3 - Adicionar remedio'
print '4 - Sair'

a=raw_input('')
if a == '1':
nome=raw_input('Qual o nome do devedor ?')
divida=raw_input('Quanto deve ?')
armazenar(nome,divida)
print 'Armazenado devedor com sucesso'
print 'Voltar ao menu? [S/N]'
voltar_menu=raw_input('')
if voltar_menu == 'S' or voltar_menu == 's':
menu()
else:
print 'Saindo... Volte sempre!'
print "Desenvolvido por Bruno Normandia e Luis Henrique"
db.close()
elif a == '2':
listar()
print 'Listado.'
print 'Voltar ao menu? [S/N]'
voltar_menu=raw_input('')
if voltar_menu == 'S' or voltar_menu == 's':
menu()
else:
print 'Saindo... Volte sempre!'
print "Desenvolvido por Bruno Normandia e Luis Henrique"
db.close()
elif a == '3':
remedio=raw_input('Qual o nome do remedio?')
preco=raw_input('Quanto custa?')
estoque=raw_input('Quantas unidades de estoque?')
guardar(remedio,preco,estoque)
print 'Armazenado remedio.'
print 'Voltar ao menu? [S/N]'
voltar_menu=raw_input('')
if voltar_menu == 'S' or voltar_menu == 's':
menu()
else:
print 'Saindo... Volte sempre!'
print "Desenvolvido por Bruno Normandia e Luis Henrique"
db.close()
elif a > '4' or a < '1':
print "\n As escolhas sao de 1 a 4 !!\n"
menu()
elif a == '4':
print 'Saindo... Volte sempre!'
print "Desenvolvido por Bruno Normandia e Luis Henrique"
db.close()
menu()


  


2. Cara pq vc não usa mysql ou postgree?

Rafael Henrique da Silva Correia
rafaelhenrique

(usa Debian)

Enviado em 18/08/2007 - 12:06h

Cara achava mais viável mudar para um banco de dados realmente bom, não falando q esse tal de shelve é ruim mas acho q vc teria mais controle com outro banco de dados. Dá uma olhada ae...

http://www.pythonbrasil.com.br/moin.cgi/BancosDeDadosSql


3. Re: Como tirar o shelve deste script?

Ruhan Bidart
ruhanbidart

(usa Outra)

Enviado em 12/04/2008 - 17:49h

O shelve não é ruim, mas não está sendo usado de forma correta, pois este não é o objetivo do uso do mesmo. Ele não é feito para ser usado como banco de dados, sugiro que você procure saber sobre PostgreSql + Psycopg2. O postgre é um banco de dados em si, o psycopg2 é o "driver" de conexão com o banco de dados para python. É muito simples de ser usado. Se você quiser complementar sua pesquisa, dê uma olhada em SqlObject e SqlAlchemy, que são duas bibliotecas que facilitam (e muito) o trabalho com banco de dados no python.
Só mais uma sugestão: caso você precise REALMENTE de armazenar objetos do python, não use o shelve, leia sobre cPicke, que possui um tratamento feito em C com uma boa performance e é fácil de usar =)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts