2010-01-04 32 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」))

可以爲你工作。

相關問題