demo 替换为你的 Space ID。
根据表类型选择 NormalTable、EventTable、StateTable 或 TimeTable,构造对象时指定完整表 ID。
普通表:写入和更新
下面的demo.asset_notes 使用 id: STRING、symbol: STRING、amount: UINT256。
id,更新该记录:
write() 返回 True 表示请求已被接受,数据可能稍后才可见。写入后可用以下方法读取:
get() 查不到记录时返回 None。get_many() 按输入 ID 的顺序返回结果,缺失位置为 None。filter_rows() 接收 SQL 条件字符串,不传 WHERE 关键字。

notes.delete(['要删除的记录ID']) 删除普通表记录。
区块表:读取当前状态和区块记录
区块事件使用EventTable,区块状态使用 StateTable。下面读取追踪流动性池储备变化中已构建的状态:
block_id,StateTable.get() 直接读取该对象的 latest,不按共识高度限制读取位置。读到最新状态不代表此前的区块已全部处理。
要读取指定区块时的状态,使用 StateTable(table_id, block_id)。目标区块须在表的共识高度内,否则查询会被拒绝,详见工作原理。
需要一个区块内写入的全部记录时,使用 get_block_rows():
get() / get_many() 形式,构造对象改为 EventTable(table_id, block_id)。
区块表:提交一个区块
写入时传入结果行和区块 ID。服务端补齐block_height、block_id 和 block_timestamp。
时间表:按时刻读写
demo.price_samples 使用时间表的固定字段 id、time_at、value,其中 id 为 STRING。
大批量写入
数据量超出单次请求上限时使用batch_write()。三类表的调用方式不同:
区块表按区块包提交,一次覆盖该区块包已有的全部数据。逐块写入时由服务端补齐的三个区块字段,这里必须每行自带;缺少任何一个,整个任务都会失败。
批量写入异步执行,返回
True 只表示已提交。提交后的状态检查见查看异步写任务。