2010-01-04 33 views
1

我在我的Python脚本中使用MySQLdb库连接到MySQL。如何使用Python将光标移动到MySQL中的最后一个记录?

(Ref:http://mysql-python.sourceforge.net/MySQLdb.html)。

我想了解是否有方法可以跳转到使用Python的结果集中的最后一条记录?
换句话说,我想将光标移到结果集中的最后一条记录。

+1

似乎没有多少人能够理解这个问题,但这对于在SQL中知道'CURSOR'的人来说是完全有效的关注。不幸的是,Python中的大部分'cursor'实现都是客户端游标(又名假游标)。它不发布'DECLARE CURSOR',因此不支持'MOVE'。我知道的唯一服务器端实现是PostgreSQL的'psycopg2'命名游标。 – 2015-02-07 21:48:49

回答

1

那么,你的问题很奇怪。你为什么想这么做?

您可以继续从光标读取记录直到它是最后一个。但是你必须尝试阅读它,以便知道它是最后一个,在阅读之前你无法知道。

另一个想法是做一个颠倒的查询。使用ORDER BY来颠倒结果顺序,最后一个将会排在第一位。

或者如果您知道记录数,则可以使用OFFSET仅返回最后一条记录。您可以首先发出COUNT查询以了解该号码,然后在OFFSET上使用此号码。

+0

并且不要忘记使用'LIMIT',这样你只能获取你感兴趣的记录而不是整个表。 – 2010-01-04 14:16:55

+0

我不认为前两种解决方案对于大型数据库是有效的。第三种解决方案(OFFSET)很有趣,这可能是我在寻找的,因为Python的MySQL API不提供诸如afterLast(),beforeFirst()这些在其他一些编程语言中很常见的函数。 – Haluk 2010-01-06 13:03:34

0

如果觉得查询是不是太硬的数据库,并且在机器上有足够的内存,你可以存储在一个列表中的结果集,并从列表中只是抓住的最后一个对象:

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] 
0

curs.execute(“SELECT ghfhgf”)

返回int与记录数。

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

curs.scroll(X)

所以

curs.scroll(curs.execute( “SELECT hgffg”))

可以为你工作。

相关问题