Могу ли я установить пользовательскую переменную в Python MySQLdb? - PullRequest
8 голосов
/ 24 июля 2011

Итак, моя проблема в том, что у меня есть запрос, который использует переменную, определенную пользователем Mysql, например: @x:=0 SELECT @X:=@X+1 from some_table и этот код возвращает столбец с 1-1000.

Однако этот запрос не работает, если я отправил его через mySQLdb в Python.

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

Он печатает пустой кортеж.

Как я могу решить это?

Спасибо

Ответы [ 2 ]

6 голосов
/ 24 июля 2011

Попробуйте выполнить по одному запросу за раз:

cursor.execute("SET @X:=0;");
cursor.execute("SELECT @X:=@X+1 FROM some_table");
3 голосов
/ 24 июля 2011

Попробуйте как два запроса.

Если вы хотите, чтобы это был один запрос, примеры в комментариях к документации по пользовательским переменным MySQL выглядят так:

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

или

SELECT if(@a, @a:=@a+1, @a:=1) as rownum

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...