我可以在Python MySQLdb中设置用户定义变量吗?

9 投票
2 回答
5840 浏览
提问于 2025-04-16 22:10

我的问题是这样的,我有一个查询,它使用了Mysql的用户定义变量,比如:

@x:=0 SELECT @X:=@X+1 from some_table

这段代码会返回一个从1到1000的列。

但是,当我通过Python中的mySQLdb发送这个查询时,它就不工作了。

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 个回答

10

试着一次只执行一个查询:

cursor.execute("SET @X:=0;");
cursor.execute("SELECT @X:=@X+1 FROM some_table");
3

试着把它分成两个查询。

如果你想把它做成一个查询,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

撰写回答