0

Python で GQL の結果をフィルター処理するキーを比較しようとしていますが、int への直接比較も型キャストも機能しません。したがって、以下のコメントされていない行に記載されているように、回避策を講じることを余儀なくされています。手がかりはありますか?

row = self.request.get("selectedrow")
#mydbobject = DbModel.gql("WHERE key=:1", row).fetch(1)
#mydbobject = DbModel.gql("WHERE key=:1", int(row)).fetch(1)#invalid literal for int()   with base 10
#print mydbobject,row

que = db.Query(DbModel)
results = que.fetch(100)
mydbobject = None
for item in results:
if item.key().__str__() in row:
    mydbobject = item

EDIT1- レコードを取得しないもう 1 回の試行。キーはレコードと共にデータストアに存在します mydbobject = DbModel.gql("WHERE key = KEY('%s')"%row).fetch(1)

4

2 に答える 2

1

基本的に特定のキーを持つオブジェクトを取得したいだけだという私の仮定は正しいですか? その場合は、get および get_by_id メソッドが役立つ場合があります。

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))
于 2009-06-09T19:58:55.787 に答える
0

エラー「int()のリテラルが無効です」は、intへのパラメーターパスが整数を表す文字列ではなかったことを示します。デバッグのために「row」の値を出力してみてください。空の文字列であるに違いありません。

キーから要素を取得する正しい方法は、メソッド「get」または「get_by_id」を使用することです。あなたの場合:

row = self.request.get("selectedrow")
mydbobject = DbModel.get(row)
于 2009-06-09T20:34:56.930 に答える