当前位置: 首页 > 知识库问答 >
问题:

是否有任何功能可以使用Python客户端删除现有记录的箱

卞俊哲
2023-03-14

我想从现有的航空尖峰记录中删除箱。是否有任何 python 客户端函数将用于从现有记录中删除垃圾箱?

我尝试扫描整个集合并使用 aerospike.null() 更新该记录箱,但它需要扫描所有记录。

共有2个答案

韦阳晖
2023-03-14

更新记录的箱,使用 put() 和 aerospike.null() 将其设置为 null,或使用 remove_bin 删除一个或多个箱。

此处的 API 参考:https://www.aerospike.com/apidocs/python/client.html?highlight=bin#aerospike.Client.remove_bin

杨晓博
2023-03-14

如果你想从单个记录中删除垃圾箱,pgupta的建议将起作用。如果要从多个记录、整个集合或整个命名空间中删除箱,可以使用扫描和 scan.execute_background() 异步删除箱。下面是使用扫描删除垃圾箱的示例。

from __future__ import print_function
import aerospike
from aerospike_helpers.operations import operations
import time

# Configure the client.
config = {"hosts": [("127.0.0.1", 3000)]}

# Create a client and connect it to the cluster.
client = aerospike.client(config).connect()

TEST_NS = "test"
TEST_SET = "demo"

# Write the records.
keys = [(TEST_NS, TEST_SET, i) for i in range(5)]
for i, key in enumerate(keys):
    client.put(key, {"account_number": i, "score": i * 10})

# EXAMPLE: Remove score bin from each record.
ops = [operations.write("score", aerospike.null())]
scan = client.scan(TEST_NS, TEST_SET)
scan.add_ops(ops)
scan.execute_background()

# Allow scan to complete.
while True:
    response = client.job_info(job_id, aerospike.JOB_SCAN)
    if response['status'] != aerospike.JOB_STATUS_INPROGRESS:
        break
    time.sleep(0.1)

# Print bins.
for key in keys:
    _, _, bins = client.get(key)
    print(bins)

# Cleanup and close the connection to the Aerospike cluster.
for i, key in enumerate(keys):
    client.remove(key)
client.close()

"""
EXPECTED OUTPUT:
{'account_number': 0}
{'account_number': 1}
{'account_number': 2}
{'account_number': 3}
{'account_number': 4}
"""

如果要限制删除哪些记录的箱,可以将谓词附加到扫描。请参阅 results() 底部的示例。

 类似资料:
  • 问题内容: 我有一对多关系的两个数据库表。数据如下所示: 结果集: 我想删除所有应用程序,但最新的除外。换句话说,每个学生都只能将一个应用程序链接到该应用程序。使用上面的示例,数据应如下所示: 我将如何构造我的DELETE语句以过滤出正确的记录? 问题答案: 考虑到评论中的长时间讨论,请注意以下几点: 上面的语句 将 在任何正确实现语句级读取一致性的数据库上运行,而不管语句运行时对表的任何更改。

  • 在这一点上我应该做什么->??? 还有什么有用的建议,教我,让我的程序发展:)

  • 问题内容: 我有一个类似于GORM的例子的many2many结构: 假设我创建了一个用户,它具有两种关联的语言。 我从数据库中获取用户记录,并从用户的Languages数组中删除一种语言。然后,将gorm:save_associations设置为true来保存用户。 我希望GORM删除将用户与该语言关联的记录(在GORM管理的关联表中)。但是,它不会被删除。这是预期的吗? 通过从用户记录的“语言”

  • 我正在使用RabbitMQ集群进行作业队列。我想知道当我们使用Spring AMQP时,是否有任何功能可以简化与RabbitMQ集群的交互?或者最好使用官方Java客户端?

  • 我想使用并使其直接进入给定的url,而不是从ribbon配置中获取主机。 我知道在Spring,cloud-feign默认与ribbon和eureka一起出现。 根据这个:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eure

  • 问题内容: 我有一个这样的表: 我正在尝试删除具有3个以上具有相同ID的名称的记录,但要删除所有记录。因此,我试图得到这样的东西: 我不了解如何编写此查询。我已经达到了保留一个记录但没有记录阈值的程度: 给我: 有什么建议?哦,对了,我不在乎合并时会保留哪些记录。 问题答案: 您可以使用CTE做到这一点

  • 这个问题不是关于Rollbar tho:)