如何使用Python将光标移动到MySQL中的最后一条记录?

如何使用Python将光标移动到MySQL中的最后一条记录?,python,mysql,Python,Mysql,我正在使用MySQLdb库在Python脚本中连接到MySQL (参考:) 我想了解是否有办法使用Python跳转到结果集中的最后一条记录? 换句话说,我想将光标移动到结果集中的最后一条记录。你的问题很奇怪。你为什么要这么做 您可以一直从光标读取记录,直到最后一次读取为止。但是你必须试着读过它才能知道它是最后一个,在读之前你不可能知道 另一个想法是进行反向查询。使用orderby反转结果顺序,最后一个将排在第一位 或者,如果您知道记录的数量,可以使用OFFSET仅返回最后一条记录。你可以先发出一

我正在使用MySQLdb库在Python脚本中连接到MySQL

(参考:)

我想了解是否有办法使用Python跳转到结果集中的最后一条记录?

换句话说,我想将光标移动到结果集中的最后一条记录。

你的问题很奇怪。你为什么要这么做

您可以一直从光标读取记录,直到最后一次读取为止。但是你必须试着读过它才能知道它是最后一个,在读之前你不可能知道

另一个想法是进行反向查询。使用
orderby
反转结果顺序,最后一个将排在第一位


或者,如果您知道记录的数量,可以使用
OFFSET
仅返回最后一条记录。你可以先发出一个
COUNT
查询来知道这个数字,然后在
OFFSET
上使用这个数字。你为什么要这么做

您可以一直从光标读取记录,直到最后一次读取为止。但是你必须试着读过它才能知道它是最后一个,在读之前你不可能知道

另一个想法是进行反向查询。使用
orderby
反转结果顺序,最后一个将排在第一位


或者,如果您知道记录的数量,可以使用
OFFSET
仅返回最后一条记录。您可以先发出
COUNT
查询以了解数字,然后在
OFFSET

上使用此数字。如果您觉得数据库上的查询不是太难,并且计算机上有足够的内存,您可以将结果集存储在列表中,只需从列表中抓取最后一个对象:

import MySQLdb
conn = MySQLdb.connect(host='',user='',passwd='')
curs = conn.cursor()
curs.execute('show databases') # or whatever query
last_result = [x[0] for x in curs.fetchall()][-1]

如果您觉得db上的查询不是太难,并且机器上有足够的内存,则可以将结果集存储在列表中,只需从列表中获取最后一个对象:

import MySQLdb
conn = MySQLdb.connect(host='',user='',passwd='')
curs = conn.cursor()
curs.execute('show databases') # or whatever query
last_result = [x[0] for x in curs.fetchall()][-1]
curs.execute(“选择ghfhgf”)

返回一个包含记录数的整数

从一个记录移动到另一个记录的步骤

滚动光标(x)

所以

光标滚动(光标执行(“选择hgffg”))

可以为您工作。

curs.execute(“选择ghfhgf”)

返回一个包含记录数的整数

从一个记录移动到另一个记录的步骤

滚动光标(x)

所以

光标滚动(光标执行(“选择hgffg”))


可以为您工作。

并且不要忘记使用
限制
,这样您只获取您感兴趣的记录,而不是整个表。我认为前两种解决方案在大型数据库上不太有效。第三个解决方案(OFFSET)很有趣,这可能是我想要的,因为Python的MySQL API不提供afterLast()和beforeFirst()等函数这在其他一些编程语言中非常常见。别忘了使用
LIMIT
,这样您只能获取感兴趣的记录,而不是整个表。我不认为前两种解决方案在大型数据库上是有效的。第三个解决方案(OFFSET)很有趣,这可能是我想要的,因为Python的MySQL API不提供afterLast()和beforeFirst()等函数这在其他一些编程语言中非常常见。似乎没有多少人理解这个问题,但对于了解SQL中的
CURSOR
的人来说,这是完全正确的。不幸的是,Python中的大多数
cursor
实现都是客户端cursor(也称为伪cursor)。它不发出
声明游标
,因此不支持
移动
。我所知道的唯一服务器端实现是PostgreSQL的
psycopg2
命名游标。似乎没有多少人理解这个问题,但这对于了解SQL中
cursor
的人来说是完全正确的。不幸的是,Python中的大多数
cursor
实现都是客户端cursor(也称为伪cursor)。它不发出
声明游标
,因此不支持
移动
。我知道的唯一服务器端实现是PostgreSQL的
psycopg2
的命名游标。