read()with Keysets,range

时间:2017-11-15 15:58:11

标签: python-2.7 google-cloud-platform google-cloud-spanner

我开始使用Spanner Python客户端(在appengine flex上),但在尝试重用doc示例时我碰到了一些问题。 我面临的一个问题是尝试阅读数据库:

  • execute_sql()返回空集(即使是简单的' SELECT 1'查询)

    with database.snapshot() as snapshot:
    QUERY = ('SELECT 1')
    result = snapshot.execute_sql(QUERY)
    for row in result.rows:
        print(row)
    
  • read()返回一个" AttributeError:' list'对象没有属性' to_pb'"错误,我是否

    • 尝试将整个键集构建为字典

      keyset = {'keys': ['f0_'], 
                'ranges': [{'startClosed': [], 'endClosed': [500]}], 
                'all': False}
      
    • 直接传递价值清单

      keyset = [0, 1, 2] 
      
  • 尝试使用Keyset()构造函数告诉我扳手没有键集成员 AttributeError:'模块' object没有属性' keyset'

    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])
    

所以我有点卡住了,我想知道是否有我做错的事情或者示例/文档需要一点点贬值...... 任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分: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))
...