Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida: Python + MySQL


Procarrera

Pergunta

Olá Pessoal!

Estou iniciando em Python e este é meu primeiro post aqui.... não tenho muita experiência com Python e nem com MySQL... Há um tempo atrás dei a sorte, ou destino, de estudar um pouco de C, o que me deu base para encarar o estudo das diversas lingaugens por ai....... MySQL eu não conhecia muito e estou começando a mexer agora, não necessito nada muito complexo dela (eu acho), então não estou me preocupando muito com detalhes.

Python pelo pouco que li, e aprendi, não está me parecendo muito dificil, estou gostando bastante da linguagem e digo, com certeza, que saber um pouco de C me deu uma excelente base para python.

Sem mais delongas, vou expor meu problema:

1) Estou precisando fazer duas listas, vou chamar uma lista de LISTA_OBJETOS e a outra de LISTA_CASA.

Na LISTA_OBJETOS estarão todos os OBJETOS (sofá, cadeira, tv, ...) e na LISTA_CASA estarão listadas todas CASAS (Casa 1, Casa 2 , Casa 3, ...).

Para essa primeira etapa, pensei em criar um DB armazenando as duas listas em tabelas distintas, uma chamada TABELA_OBJETOS e a outra TABELA_CASAS.

  • - Na TABELA_OBJETOS terá apenas uma coluna com o nome dos OBJETOS e, claro, cada um ocupando uma linha na tabela.

- Já na TABELA_CASAS terão 3 colunas: Nome da Casa; Lista de Objetos; e Valor de CADA OBJETO.

Por exemplo, na Casa 1, tenho os OBJETOS SOFÁ, CADEIRA e TV. Preciso dizer que, para a Casa 1, o objeto Sofá tem VALOR = R$200,00; CADEIRA = R$50,00 e TV = R$1.000,00.

Na Casa 2, entretanto, os mesmos objetos podem receber valores diferentes (ex: Sofá = R$100,00 / Cadeira = R$20,00 / Tv = R$300,00).

2) O próximo passo seria criar um sistema de BUSCA, onde se possa inserir os OBJETOS desejados, e o sistema listará as Casas que possuam ao menos um destes Objetos, ordenando o resultado pelo somatório dos VALORES dos objetos pesquisados.

POR ENQUANTO PEÇO AJUDA PARA CONCLUIR A ETAPA 1......

Estou usando o Python 2.7 e o MySQL 5.5.24(através do WAMPSERVER no localhost)

Instalei o MySQL-python-1.2.3.win32-py2.7 para usar o Módulo MySQLdb

Tentei concluir um tutorial básico para inserir uma linha na tabela, mas não estou tendo sucesso, segue o código que estou rodando.

# Importa o modulo MySQL
import MySQLdb

# Pega a entrada do usuario
obj_nome = raw_input("Nome do Objeto:")
      
# Conecta Banco de Dados
db = MySQLdb.connect(host="localhost", user="root", passwd="",
db="hometeste")

# Cria um cursor
cursor = db.cursor()

# Executa o SQL
cursor.execute("INSERT INTO tabela_objetos VALUES ('%s');",
(obj_nome))

cursor.close()
db.close()
A mensagem de erro:
>>> 
Nome do Objeto: cadeira

Traceback (most recent call last):
  File "C:/Python27/Meus Projetos/Tabela_Casas_MySQL.py", line 19, in <module>
    (obj_nome))
  File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cadeira'')' at line 1")

OBS: Aparentemente o módulo foi bem instalado, pois obtive sucesso com o import MySQLdb direto no IDLE e também com script para retornar a versão do MySQL.

Desde já agradeço a atenção de todos! ;)

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Coloca uma virgula depois de obj_nome:

cursor.execute("INSERT INTO tabela_objetos VALUES ('%s');",
(obj_nome,))
Não estou acostumado com o driver do mysql mas acho que tem que ser sem aspas no %s:
cursor.execute("INSERT INTO tabela_objetos VALUES (%s);",
(obj_nome,))

O desenho da base está errado mas pergunte isso no fórum de mysql.

Link para o comentário
Compartilhar em outros sites

  • 0

Coloca uma virgula depois de obj_nome:

CODE
cursor.execute("INSERT INTO tabela_objetos VALUES ('%s');",

(obj_nome,))

Não estou acostumado com o driver do mysql mas acho que tem que ser sem aspas no %s:

CODE
cursor.execute("INSERT INTO tabela_objetos VALUES (%s);",

(obj_nome,))

O desenho da base está errado mas pergunte isso no fórum de mysql.

Então eu concordo com ele, tu pode ou não usar as aspas, os códigos que tenho feito eu dispensei as aspas simples que muitas vezes era o problema. ^^

E repare que depois que você colocou o comando sql ali

cursor.execute("INSERT INTO tabela_objetos VALUES (%s);",

(obj_nome,))

Essa vírgula depois de obg_nome, não é preciso.

Editado por MarianaNT
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...