我在我的Python脚本中使用MySQLdb库连接到MySQL。如何使用Python将光标移动到MySQL中的最后一个记录?
(Ref:http://mysql-python.sourceforge.net/MySQLdb.html)。
我想了解是否有方法可以跳转到使用Python的结果集中的最后一条记录?
换句话说,我想将光标移到结果集中的最后一条记录。
我在我的Python脚本中使用MySQLdb库连接到MySQL。如何使用Python将光标移动到MySQL中的最后一个记录?
(Ref:http://mysql-python.sourceforge.net/MySQLdb.html)。
我想了解是否有方法可以跳转到使用Python的结果集中的最后一条记录?
换句话说,我想将光标移到结果集中的最后一条记录。
那么,你的问题很奇怪。你为什么想这么做?
您可以继续从光标读取记录直到它是最后一个。但是你必须尝试阅读它,以便知道它是最后一个,在阅读之前你无法知道。
另一个想法是做一个颠倒的查询。使用ORDER BY
来颠倒结果顺序,最后一个将会排在第一位。
或者如果您知道记录数,则可以使用OFFSET
仅返回最后一条记录。您可以首先发出COUNT
查询以了解该号码,然后在OFFSET
上使用此号码。
并且不要忘记使用'LIMIT',这样你只能获取你感兴趣的记录而不是整个表。 – 2010-01-04 14:16:55
我不认为前两种解决方案对于大型数据库是有效的。第三种解决方案(OFFSET)很有趣,这可能是我在寻找的,因为Python的MySQL API不提供诸如afterLast(),beforeFirst()这些在其他一些编程语言中很常见的函数。 – Haluk 2010-01-06 13:03:34
如果觉得查询是不是太硬的数据库,并且在机器上有足够的内存,你可以存储在一个列表中的结果集,并从列表中只是抓住的最后一个对象:
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(“SELECT ghfhgf”)
返回int与记录数。
从一个记录移动到另一个X步骤
curs.scroll(X)
所以
curs.scroll(curs.execute( “SELECT hgffg”))
可以为你工作。
似乎没有多少人能够理解这个问题,但这对于在SQL中知道'CURSOR'的人来说是完全有效的关注。不幸的是,Python中的大部分'cursor'实现都是客户端游标(又名假游标)。它不发布'DECLARE CURSOR',因此不支持'MOVE'。我知道的唯一服务器端实现是PostgreSQL的'psycopg2'命名游标。 – 2015-02-07 21:48:49