Spec-Zone.ru › RethinkDB python

Команда ReQL: delete

Синтаксис команды

table.delete([durability="hard", return_changes=False, ignore_write_hook=False]) → object
selection.delete([durability="hard", return_changes=False, ignore_write_hook=False]) → object
singleSelection.delete([durability="hard", return_changes=False, ignore_write_hook=False]) → object

Описание

Удаляет один или несколько документов из таблицы.

Дополнительные аргументы:

  • durability: возможные значения hard и soft. Этот параметр переопределит настройку долговечности таблицы или запроса (установлена в run). В режиме мягкой долговечности RethinkDB подтвердит запись сразу после ее получения, но до момента, когда запись будет зафиксирована на диске.
  • return_changes:
    • True: возвращает массив changes объектов old_val/new_val, описывающих внесенные изменения, включая только документы, которые были фактически обновлены.
    • False: не возвращает массив changes (по умолчанию).
    • "always": работает как True, но включает все документы, которые команда пыталась обновить, независимо от того, было ли обновление успешным. (Это было поведение True до версии 2.0.)
  • ignore_write_hook: Если True, и если у пользователя есть право config, игнорирует любой write hook, который мог бы запретить удаление.

Команда delete возвращает объект, содержащий следующие атрибуты:

  • deleted: количество удаленных документов.
  • skipped: количество пропущенных документов.
    Например, если вы пытаетесь удалить пакет документов, а другой одновременный запрос удаляет некоторые из этих документов, они будут считаться пропущенными.
  • errors: количество ошибок, возникших при выполнении удаления.
  • first_error: если возникли ошибки, содержит текст первой ошибки.
  • inserted, replaced, и unchanged: все 0 для операции удаления.
  • changes: если return_changes установлено в True, это будет массив объектов, по одному для каждого затронутого объектом delete операции. Каждый объект будет иметь два ключа: {"new_val": None, "old_val": <old value>}.

Операции записи RethinkDB будут выбрасывать исключения только в случае ошибок до выполнения любых записей. Другие ошибки будут перечислены в first_error, а errors будет установлено в ненулевое значение. Чтобы правильно обработать ошибки с этим термином, код должен обрабатывать как исключения, так и проверять возвращаемое значение errors!

Пример: Удаление одного документа из таблицы comments.

r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn)

Пример: Удаление всех документов из таблицы comments.

r.table("comments").delete().run(conn)

Пример: Удаление всех комментариев, где поле id_post имеет значение 3.

r.table("comments").filter({"id_post": 3}).delete().run(conn)

Пример: Удаление одного документа из таблицы comments и возвращение его значения.

r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete(return_changes=True).run(conn)

Результат будет выглядеть так:

{
    "deleted": 1,
    "errors": 0,
    "inserted": 0,
    "changes": [
        {
            "new_val": None,
            "old_val": {
                "id": "7eab9e63-73f1-4f33-8ce4-95cbea626f59",
                "author": "William",
                "comment": "Great post",
                "id_post": 3
            }
        }
    ],
    "replaced": 0,
    "skipped": 0,
    "unchanged": 0
}

Пример: Удаление всех документов из таблицы comments без ожидания, пока операция будет записана на диск.

r.table("comments").delete(durability="soft").run(conn)

Связанные команды

  • insert
  • update
  • replace

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/delete/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API