You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:42:35