Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alissong

Consulta Dinâmica

Recommended Posts

Pessoal,

 

Estou tentando aprender python. A versão instalada é 2.5 windows + apache 2.0.63 + php 5.2.3. Então fiz essa consulta no mysql, porém queria digitar o código no input e exibe o produto. Veja código:

#!/usr/bin/python

import MySQLdb

codigo = int(raw_input('Digite o código do produto: '))

# Conecta

db = MySQLdb.connect(host="localhost", user="xxxx", passwd="xxxx", db="xxxxxx")

# Cria um cursor

cursor = db.cursor()

# Executa o SQL

cursor.execute("SELECT * FROM produto WHERE cod_produto = %s")

numrows = int(cursor.rowcount)

# Lista uma linha de cada vez

for x in range(0,numrows):

row = cursor.fetchone()

print row[0], "-->", row[1]

Portanto, quando clico F5 pede o código e depois exibe esse erro:

Traceback (most recent call last):

File "C:\Python25\curso\mysql", line 9, in <module>

cursor.execute("SELECT * FROM produto WHERE cod_produto = %s")

File "C:\Python25\Lib\site-packages\MySQLdb\cursors.py", line 166, in execute

self.errorhandler(self, exc, value)

File "C:\Python25\Lib\site-packages\MySQLdb\connections.py", line 35, 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 '%s' at line 1")

Como faço para acertar isso.

 

 

Um abraço.

 

 

Alissong

Compartilhar este post


Link para o post
Compartilhar em outros sites

cursor.execute("SELECT * FROM produto WHERE cod_produto = %s")

 

cadê o parametro que vai entrar no %s?

 

To perform a query, you first need a cursor, and then you can execute queries on it:

 

c=db.cursor()

max_price=5

c.execute("""SELECT spam, eggs, sausage FROM breakfast

WHERE price < %s""", (max_price,))

 

In this example, max_price=5 Why, then, use %s in the string? Because MySQLdb will convert it to a SQL literal value, which is the string '5'. When it's finished, the query will actually say, "...WHERE price < 5".

 

Why the tuple? Because the DB API requires you to pass in any parameters as a sequence. Due to the design of the parser, (max_price) is interpreted as using algebraic grouping and simply as max_price and not a tuple. Adding a comma, i.e. (max_price,) forces it to make a tuple.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Import Java.Isis,

 

Não entendi nada, o que você falou. Por que estou començando nessa linguagem agora.

A minha idéia era digitar o número no input para montar a claúsula where....

 

Pode-me explicar melhor o que é parâmetro em python.

 

 

Um abraço.

 

 

Alissong

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de muita busca no google. A resposta é essa:

cursor.execute("SELECT * FROM produto WHERE cod_produto = %s", (codigo))

 

Um abraço.

 

 

Alissong

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.