2011-07-24 27 views
7

Así que mi problema es este, tengo una consulta que utiliza la variable definida por el usuario Mysql como: @x:=0 SELECT @X:[email protected]+1 from some_table y este código devuelve una columna de 1-1000.¿Puedo establecer una variable definida por el usuario en Python MySQLdb?

Sin embargo, esta consulta no funciona si la envié a mySQLdb en Python.

connection =MySQLdb.Connect(host='xxx',user='xxx',passwd='xxx',db = 'xxx') 
cursor = connection.cursor 
cursor.execute("""SET @X:=0;SELECT @X:[email protected]+1 FROM some_table""") 
rows = cursor.fetchall() 
print rows 

Se imprime una tupla vacía.

¿Cómo puedo solucionar esto?

Gracias

Respuesta

3

probar, ya que dos consultas.

Si usted quiere que sea una consulta, los ejemplos en los comentarios a la documentación de variables de usuario de MySQL tener este aspecto:

SELECT @rownum:[email protected]+1 rownum, t.* FROM (SELECT @rownum:=1) r, mytable t; 

o

SELECT if(@a, @a:[email protected]+1, @a:=1) as rownum 

Ver http://dev.mysql.com/doc/refman/5.1/en/user-variables.html

+0

Hola, gracias por tu ayuda. Ahora funciona. Pero mi consulta real es un poco más complicada que este ejemplo falso. Se ejecuta bastante rápido en mysql, como 2 segundos, pero cuando envié esta consulta a través de python, es mucho más lento, como más de minutos. ¿Tiene alguna idea sobre este tema? Gracias – zsljulius

5

intenta ejecutar una consulta a la vez:

cursor.execute("SET @X:=0;"); 
cursor.execute("SELECT @X:[email protected]+1 FROM some_table"); 
+0

Gracias , Funciona muy bien ahora! – zsljulius

+0

@zsljulius de nada. no hetatete para votar mi respuesta :) – spacediver

+0

esto funcionó perfecto para mí también: D @zsljulius Edité tu respuesta para agregar algo de información extra que me hubiera ayudado incluso más rápido :) – rgenito

Cuestiones relacionadas