2017-11-15 13 views
0

私はSpanner Pythonクライアント(appengine flex上)で遊んできましたが、ドキュメンテーションの例を再利用しようとしたときに壁にぶつかっています。私が直面してる 1つの問題は、データベースを読み込むしようとしている:Keysets、範囲でのread()

  • EXECUTE_SQL()空のセットを返します(でもシンプルでクエリ '1 SELECT')

    with database.snapshot() as snapshot: 
    QUERY = ('SELECT 1') 
    result = snapshot.execute_sql(QUERY) 
    for row in result.rows: 
        print(row) 
    
  • 読み取り()を返します:I

    • 辞書

      として全体のキーセットを構築しようとするかどうか、エラー「はAttributeError 『リスト』オブジェクトには属性 『to_pb』を持っていません」直接

      keyset = [0, 1, 2] 
      
  • とキーセット()コンストラクタを使用しての試みというスパナがキーセットのメンバー はAttributeErrorを持っていない私に指示値のリストを渡す

    keyset = {'keys': ['f0_'], 
          'ranges': [{'startClosed': [], 'endClosed': [500]}], 
          'all': False} 
    
  • :「モジュール」オブジェクトが持っているの無属性 'キーセットしない'

    keys = ['f0_'] 
    ranges = spanner.keyset.KeyRange(start_closed=[], end_closed=[500]) 
    keyset = { 
        'keys': keys, 
        'ranges': ranges, 
        'all': False} 
    keyset = spanner.keyset.Keyset(keys=keys, ranges=[range]) 
    

だから私は少しこだわっている、と私は私が間違ってやっているかの例/ドキュメントはspolishingのビットを必要とする何かがあるのか​​どうかと思いまして... すべてのヘルプ感謝:)

+0

OKので、私は前方のほんの少しを移動した: はキーセット/ Keyrangesコンストラクタを使用することができましたが、私は同じ結果を得る.... –

+0

は前進、一歩ずつ:私はできました以前はsession.read()がStreamedResultSetを返すことに気がつきました(対ドキュメントで説明されているようにResultSetに対して)。 .consume_all()を追加すると、予期した結果が得られます。 –

答えて

0

遅れて申し訳ありませんあなたはKeyRangeKeysetのように使うことができます。また、.consume_all()は将来的に私的である可能性が高い。代わりにlistを使用して、必要な回答を得る必要があります。

... 
range = spanner.KeyRange(start_closed=[START], end_closed=[END]) 
keyset = spanner.KeySet(ranges=(closed_closed,)) 
rows = list(snapshot.read(self.TABLE, self.COLUMNS, keyset)) 
...