基本上,我有以下示例(假设cur来自有效连接):
>>> con = pymysql.connect(<parameters go here>)
>>> cur = con.cursor()
>>> sql = "SELECT @a := 0; SELECT @a := @a+2; SELECT @a;"
>>> res = cur.execute(sql)
>>> res
1
如您所见,res
返回整数1,这意味着sql
进展顺利。但是,最后一个选择应返回数字2,我需要该数字。
如果我运行此代码(由@falsetru建议),我也得不到我需要的东西:
>>> cur.execute(sql)
1
>>> cur.fetchall()
[{u'@a := 0': 0}]
我该如何检索它?是否可以不分离SQL语句?
答案 0 :(得分:2)
使用Cursor.fetchone
获取单行,或使用Cursor.fetchmany
/ Cursor.fetchall
获取多个或所有结果行。
row = cur.fetchone()
a = row[0]
UPDATE Cursor.execute
执行单个sql语句,因此单独执行语句(通过将sql
拆分为;
)
import pymysql
con = pymysql.connect(user='root', password='root')
cur = con.cursor()
sql = "SELECT @a := 0; SELECT @a := @a+2; SELECT @a;"
for stmt in sql.split(';'):
if stmt.strip():
cur.execute(stmt)
row = cur.fetchone()
a = row[0]
print(a) # => 2