我在我的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