赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. SDK参考
  6. Python SDK
  7. 基础数据操作
  8. 删除数据

删除数据

  • 基础数据操作
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

表格存储提供了DeleteRow接口用于删除单行数据以及BatchWriteRow接口用于批量删除数据。

注意事项

删除表数据,将导致数据不可恢复,请谨慎操作。

前提条件

  • 已初始化OTSClient。具体操作,请参见初始化Tablestore Client。

  • 已创建数据表并写入数据。具体操作,请参见创建数据表和写入数据。

删除单行数据

调用DeleteRow接口删除一行数据。如果删除的行不存在,则不会发生任何变化。

接口

"""
说明:删除一行数据。
``table_name``是对应的表名。
``primary_key``表示主键。
``condition``表示执行操作前做条件检查,满足条件才执行,是tablestore.metadata.Condition类的实例。
目前支持两种条件检测,一是对行的存在性进行检查,检查条件包括:'IGNORE','EXPECT_EXIST'和'EXPECT_NOT_EXIST';二是对属性列值的条件检测。
返回:本次操作消耗的CapacityUnit和需要返回的行数据return_row。
consumed表示消耗的CapacityUnit,是tablestore.metadata.CapacityUnit类的实例。
return_row表示需要返回的行数据。
示例:
    primary_key = [('gid',1), ('uid',101)]
    condition = Condition('IGNORE')
    consumed, return_row = client.delete_row('myTable', primary_key, condition)
"""
def delete_row(self, table_name, primary_key, condition, return_type = None, transaction_id = None):

参数

参数

是否必选

说明

table_name

是

数据表名称。

primary_key

是

行的主键。主键包括主键列名、主键类型和主键值。

重要

设置的主键个数和类型必须和数据表的主键个数和类型一致。

condition

是

支持使用条件更新,可以设置原行的存在性条件或者原行中某列的列值条件。更多信息,请参见条件更新。

return_type

否

返回数据的类型。

transaction_id

否

局部事务ID。使用局部事务功能删除数据时必须设置此参数。

示例

以下示例用于删除一行数据。

# 设置数据表名称。
table_name = '<TABLE_NAME>'
# 构造行主键。
primary_key = [('gid', 1), ('uid', '101')]
row = Row(primary_key)
condition = Condition('IGNORE')
try:
    consumed, return_row = client.delete_row(table_name, row, condition)
    print('Delete succeed, consume %s write cu.' % consumed.write)
# 客户端异常,一般为参数错误或者网络异常。
except OTSClientError as e:
    print("Delete row failed, http_status:%d, error_message:%s" % (e.get_http_status(), e.get_error_message()))
# 服务端异常,一般为参数错误或者流控错误。
except OTSServiceError as e:
    print("Delete row failed, http_status:%d, error_code:%s, error_message:%s, request_id:%s" % (
    e.get_http_status(), e.get_error_code(), e.get_error_message(), e.get_request_id()))

详细代码请参见DeleteRow@GitHub。

批量删除数据

  1. 根据实际情况选择合适的方式查询待删除数据的主键信息。

    • 如果要删除指定主键范围内的数据,请调用GetRange接口,查询指定主键范围内的数据,并获取待删除数据的主键信息。具体操作,请参见范围读取数据。

    • 如果要删除满足指定条件的数据,并且该数据表存在多元索引,请使用多元索引查询满足条件的数据,并获取待删除数据的主键信息。具体操作,请参见基础查询。

    • 如果要删除数据表中所有数据,推荐您直接删除该数据表,然后重新创建一张配置相同的数据表。

      您也可以调用GetRange接口,通过设置完整主键范围均为虚拟点INF_MIN(无穷小)和INF_MAX(无穷大)进行全表数据扫描,获取所有数据的主键信息。但是执行此操作会消耗较多计算资源,请谨慎使用。

  2. 调用BatchWriteRow接口,根据主键信息批量删除数据。更多信息,请参见批量写入数据。

常见问题

1. 表格存储Python SDK 6.0.0删除单行数据报错。

推荐以下两种方式解决此问题。

  • 升级表格存储Python SDK的版本。

  • 修改删除数据方法的参数。

    # 设置数据表名称。
    table_name = '<TABLE_NAME>'
    # 构造行主键。
    primary_key = [('gid', 1), ('uid', '101')]
    condition = Condition('IGNORE')
    try:
        consumed, return_row = client.delete_row(table_name, primary_key, condition)
        print('Delete succeed, consume %s write cu.' % consumed.write)
    # 客户端异常,一般为参数错误或者网络异常。
    except OTSClientError as e:
        print("Delete row failed, http_status:%d, error_message:%s" % (e.get_http_status(), e.get_error_message()))
    # 服务端异常,一般为参数错误或者流控错误。
    except OTSServiceError as e:
        print("Delete row failed, http_status:%d, error_code:%s, error_message:%s, request_id:%s" % (
        e.get_http_status(), e.get_error_code(), e.get_error_message(), e.get_request_id()))

相关文档

如果要删除指定天数之前的数据,您可以通过为数据表配置数据生命周期的方式自动清理过期数据。具体操作,请参见数据版本和生命周期。

相关文章

写入数据 2025-04-22 14:24

读取数据 2025-04-22 14:24

表格存储提供了单行读取、批量读取和范围读取的查询方式用于读取数据表中数据。当要读取单行数据或者批量读取表中数据时,您必须指定行的完整主键;当要范围读取表中数据时,您需要指定完整主键范围或者主键前缀。读取数据时支持配置返回指定属性列、指定数据版本个数、指定数据时间范围或者满足过滤条件的数据。

删除数据 2025-04-22 14:24

表格存储提供了DeleteRow接口用于删除单行数据以及BatchWriteRow接口用于批量删除数据。 注意事项 删除

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号