<leancloud.object_.GameScore object at 0x...> 而非數據LeanCloud Python SDK 中,Query.first() 或 Query.find() 返回的是 leancloud.Object 子類實例,直接打印只會顯示對象內存地址。需調用實例方法 .get('fieldName') 讀取具體字段值。
from leancloud import Object, Query
# 1. 定義對應 Class
GameScore = Object.extend('GameScore')
# 2. 構建查詢
query = Query(GameScore)
query.equal_to('playerName', 'Dan Stemkoski')
# 3. 獲取第一條結果
game_score = query.first()
if game_score:
# 關鍵:使用 get() 讀取字段
score = game_score.get('score')
player = game_score.get('playerName')
print(f"Player: {player}, Score: {score}")
else:
print("未找到匹配記錄")
# 4. 只選擇特定字段(節省流量)
query.select('score', 'playerName')
# 仍需調用 get() 讀取
result = query.first()
if result:
print(result.get('score'))
| 方法 | 用途 | 示例 |
|---|---|---|
obj.get('key') | 獲取單字段值(推薦) | score = obj.get('score') |
obj.get('key', default) | 帶默認值獲取 | obj.get('age', 0) |
obj.attributes | 獲取全屬性字典(只讀) | data = obj.attributes |
obj.fetch() | 從服務器刷新最新數據 | obj.fetch() 返回更新後的對象 |
query.limit(20).skip(20) 實現翻頁。query.add_descending('createdAt') 按創建時間倒序。query.equal_to('status', 1).greater_than('score', 100) 鏈式調用即 AND 邏輯。Query.or_(query1, query2) 組合多個查詢條件。query.count() 僅返回符合條件的記錄數,不拉取數據。print(query.first()) 期望看到數據,必須 .get()。select() 僅限制網絡傳輸字段,返回對象仍需 get() 讀取。fetch() 用於刷新已有對象(如其他端修改後同步),新查詢結果通常已是最新,無需額外 fetch。GameScore)與控制台一致,區分大小寫。掌握 Object.get() 這一核心方法,即可流暢地在 Python 中讀寫 LeanCloud 數據,構建高效的後端服務。