2010-06-30 31 views
6

Trong Google App Engine, một thực thể có Khóa. Một khóa có thể được làm từ một đường dẫn, trong đó trường hợp str (khóa) là một chuỗi hex đục. Ví dụ:Làm thế nào để giải mã một thực thể Google App Engine Đường dẫn khóa str trong Python?

from google.appengine.ext import db 
foo = db.Key.from_path(u'foo', u'bar', _app=u'baz') 
print foo 

cho

agNiYXpyDAsSA2ZvbyIDYmFyDA 

nếu bạn thiết lập các đường dẫn bên phải để chạy mã.

Vì vậy, làm cách nào có thể lấy chuỗi hex và lấy lại đường dẫn? Tôi nghĩ câu trả lời sẽ nằm trong tài liệu Key hoặc entity group nhưng tôi không thể nhìn thấy.

+0

Bạn có thể lấy lại Khóa bằng cách sử dụng hàm tạo - http://code.google.com/appengine/docs/python/datastore/keyclass.html#Key. Tôi không chắc chắn làm thế nào để có được con đường trở lại từ Key mặc dù. – hwiechers

+0

Bạn có thể sử dụng công cụ này để xem một khóa cụ thể: http://datastore-key.appspot.com/. Nó cũng hoạt động như một dịch vụ với đầu ra JSON. – Deleplace

Trả lời

7
from google.appengine.ext import db 

k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA') 
_app = k.app() 
path = [] 
while k is not None: 
    path.append(k.id_or_name()) 
    path.append(k.kind()) 
    k = k.parent() 
path.reverse() 
print 'app=%r, path=%r' % (_app, path) 

khi chạy trong một điều khiển phát triển, điều này quả đầu ra:

app=u'baz', path=[u'foo', u'bar'] 

theo yêu cầu. Một lựa chọn ngắn hơn là sử dụng (không may, tôi tin rằng, không có giấy tờ) to_path phương pháp Key trường hợp:

k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA') 
_app = k.app() 
path = k.to_path() 
print 'app=%r, path=%r' % (_app, path) 

với kết quả tương tự. Nhưng phiên bản đầu tiên, dài hơn chỉ dựa trên các phương pháp được ghi lại.

+3

Thiếu tài liệu về .to_path() là lỗi - nó chắc chắn được dự định sử dụng bên ngoài. :) –

+1

Nó chắc chắn dễ hơn rất nhiều so với việc cố giải mã bằng tay! –

+1

@Nick, tôi nghi ngờ điều đó, nhưng không thực sự _know_! Vì vậy, tx cho thông tin. May mắn thay, có vẻ như đó chỉ là một lỗi tài liệu sửa lỗi nhanh. –

2

Khi bạn có đối tượng Key (có thể được tạo bằng cách chuyển mã nhận dạng mờ đó cho hàm tạo), hãy sử dụng Key.to_path() để nhận đường dẫn của Key làm danh sách. Ví dụ:

from google.appengine.ext import db 
opaque_id = 'agNiYXpyDAsSA2ZvbyIDYmFyDA' 
path = db.Key(opaque_id).to_path() 
Các vấn đề liên quan