Есть ли какая-либо функция для удаления ячеек существующих записей с помощью python клиента - PullRequest
1 голос
/ 09 марта 2020

Я хочу удалить контейнеры из существующих записей аэроспайков. Существует ли какая-либо клиентская функция python, которая будет использоваться для удаления лотков из существующих записей?

Я пытался сканировать весь набор и обновлять этот блок записей с помощью aerospike.null(), но для сканирования требуются все записи.

Ответы [ 2 ]

4 голосов
/ 09 марта 2020

Если вы хотите удалить ячейки из отдельных записей, предложения pgupta будут работать. Если вы хотите удалить ячейки из многих записей, всего набора или целого пространства имен, вы можете использовать scan и 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 () .

1 голос
/ 09 марта 2020

Обновите корзину записи, установив для нее значение null, используя put () и aerospike.null () или используйте remove_bin для удаления одной или нескольких корзин.

Ссылка API здесь: https://www.aerospike.com/apidocs/python/client.html?highlight=bin#aerospike .Client.remove_bin

...