使用Python读取GCP Spanner数据库时遇类型错误求助
解决GCP Spanner Python SDK的两个TypeError问题
错误1:spanner.KeySet(keys=(1,23))引发'int' object is not iterable
Spanner的KeySet中,keys参数要求每个主键值必须是可迭代对象(哪怕主键只有单个字段)。你传入的(1,23)是两个独立的int值,每个int本身不是可迭代类型,不符合参数要求。
解决方法:把每个主键值包装成元组,修改为keys=((1,), (23,))。
错误2:keyset = spanner.KeySet(all_=True)引发Value must be iterable
这个错误并非KeySet(all_=True)的问题,而是代码里的columns=all参数错误。columns需要传入列名的可迭代集合(比如列表或元组),但all是Python内置函数,不是合法的列名集合。
解决方法:如果要查询所有列,传入columns=["*"];如果只需特定列,传入具体列名列表(比如columns=["id", "title"])。
修正后的测试代码
# Execute a simple SQL statement. with database.snapshot() as snapshot: # 方式1:指定主键查询 keyset = spanner.KeySet(keys=((1,), (23,))) results = snapshot.read(table="Listings", columns=["*"], keyset=keyset) # 方式2:查询全表(取消注释即可使用) # keyset = spanner.KeySet(all_=True) # results = snapshot.read(table="Listings", columns=["*"], keyset=keyset)
内容的提问来源于stack exchange,提问作者user8408233
相关产品推荐
相关产品推荐

