Удаление данных из базы данных.
Следующие методы позволяют удалить данные из базы данных.
Удалить
delete(each: bool = False, **kwargs) -> int
Удаление уровня QuerySet используется для удаления нескольких записей одновременно.
Для удаления всей таблицы необходимо либо отфильтровать QuerySet, либо ввести флаг each=True.
Если вы не предоставляете этот флаг или фильтр, генерируется QueryDefinitionError.
Возвращает количество удаленных строк.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | import asyncio
import databases
import ormar
import sqlalchemy
from examples import create_drop_database
DATABASE_URL = "sqlite:///test.db"
ormar_base_config = ormar.OrmarConfig(
database=databases.Database(DATABASE_URL),
metadata=sqlalchemy.MetaData(),
)
class Book(ormar.Model):
ormar_config = ormar_base_config.copy(tablename="books")
id: int = ormar.Integer(primary_key=True)
title: str = ormar.String(max_length=200)
author: str = ormar.String(max_length=100)
genre: str = ormar.String(
max_length=100,
default="Fiction",
)
@create_drop_database(base_config=ormar_base_config)
async def run_query():
await Book.objects.create(
title="Tom Sawyer", author="Twain, Mark", genre="Adventure"
)
await Book.objects.create(
title="War and Peace in Space", author="Tolstoy, Leo", genre="Fantasy"
)
await Book.objects.create(
title="Anna Karenina", author="Tolstoy, Leo", genre="Fiction"
)
# delete accepts kwargs that will be used in filter
# acting in same way as queryset.filter(**kwargs).delete()
await Book.objects.delete(genre="Fantasy") # delete all fantasy books
all_books = await Book.objects.all()
assert len(all_books) == 2
asyncio.run(run_query())
|
Метод модели
Каждый экземпляр модели имеет набор способов сохранения, обновления или загрузки самого себя.
Удалить
Экземпляр модели можно удалить с помощью метода delete().
!!!tip Подробнее о методе delete() в методах модели
Метод QuerysetProxy
При прямом доступе к соответствующему полю ManyToMany и ReverseForeignKey, возвращайтесь к списку связанных моделей.
Но в то же время он предоставляет подмножество API QuerySet, поэтому вы можете фильтровать, создавать и выбирать связанные модели непосредственно из родительской модели.
Устранение
Соответствующая модель исключена.
Удаление связей в базе данных.
При присвоении флагу keep_reversed значения Falseormar связанная модель также удаляется из базы данных.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | Class Album(Ormar):
ormar_config = base_ormar_config ()
id: int = ormar.Integer(primary_key =True)
name: str = ormar.String(max_length =100)
is_best seller: bool = ormar.Boolean(default=False)
Class Track(Ormar):
ormar_config = base_ormar_config ()
id: int = ormar.Integer(primary_key =True)
Альбом: Optional (Album)= ormar.ForeignKey(альбом)
title: str = ormar.String(max_length =100)
position: int = ormar.Integer()
play_count: int = ormar.Integer(nullable=True)
Альбом (name="Malibu").save()
100 - 100 (
album=album, title="The Bird", position=1, play_count =30
save()
Remove Through proxy from reverse side of relation
remove(track1, keep_reversed =False)
#track был также удален
Tracks = await Track.objects.all ()
assert len(tracks) = 0
|
Очистить
Удалите все связанные модели за один вызов.
Также удаляются связи из базы данных.
При присвоении флагу keep_reversed значения Falseormar связанная модель также удаляется из базы данных.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | Class Album(Ormar):
ormar_config = base_ormar_config ()
id: int = ormar.Integer(primary_key =True)
name: str = ormar.String(max_length =100)
is_best_seller: bool = ormar.Boolean(default=False)
Class Track(Ormar):
ormar_config = base_ormar_config ()
id: int = ormar.Integer(primary_key =True)
Альбом: Optional (Album)= ormar.ForeignKey(альбом)
title: str = ormar.String(max_length =100)
position: int = ormar.Integer()
play_count: int = ormar.Integer(nullable=True)
Альбом (name="Malibu").save()
100 - 100 (
Альбом =album,
title="The Bird".
position=1,
play_count =30,
save()
Рецепт ((
Альбом =album,
Оригинальное название: Heart Don't Stand a Chance
Position=2,
play_count =20,
save()
# removes the relation Only («Чистые иностранные ключи в треке»)
Альбом: Tracks.clear ()
# Removes And So the Tracks
Album. tracks.clear (keep_reversed =False)
|