如何使用 pymysql 从多个 select 语句中获取结果
How to get a result from multiple select statements with pymysql
基本上,我有以下示例(假设 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
return 是整数 1,这意味着 sql
进行得很顺利。但是,最后一个 select 应该 return 数字 2,我需要那个数字。
如果我运行这个代码(由@falsetru建议),我也没有得到我需要的东西:
>>> cur.execute(sql)
1
>>> cur.fetchall()
[{u'@a := 0': 0}]
我怎样才能找回它?是否可以不分隔 SQL 语句?
使用 Cursor.fetchone
to get a single row, or 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
基本上,我有以下示例(假设 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
return 是整数 1,这意味着 sql
进行得很顺利。但是,最后一个 select 应该 return 数字 2,我需要那个数字。
如果我运行这个代码(由@falsetru建议),我也没有得到我需要的东西:
>>> cur.execute(sql)
1
>>> cur.fetchall()
[{u'@a := 0': 0}]
我怎样才能找回它?是否可以不分隔 SQL 语句?
使用 Cursor.fetchone
to get a single row, or 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