데이터베이스에서 데이터 삭제
다음 방법을 사용하면 데이터베이스에서 데이터를 삭제할 수 있습니다.
삭제
delete(each: bool = False, **kwargs) -> int
쿼리 설정 수준 삭제는 한 번에 여러 레코드를 삭제하는 데 사용됩니다.
전체 테이블을 삭제하려면 먼저 쿼리 세트를 필터링하거나 각 = 참 플래그를 제공해야 합니다.
이 플래그 또는 필터를 제공하지 않으면 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())
|
모델 방법
각 모델 인스턴스에는 저장, 업데이트 또는 로드하는 일련의 방법이 있습니다.
삭제
삭제() 메서드를 호출하여 모델 인스턴스를 삭제할 수 있습니다.
!!!팁 모델 방법의 삭제() 방법에 대해 자세히 알아보기
QuerysetProxy 방법
관련 ManyTo많이 필드 및 ReverseForeignKey에 직접 액세스하면 관련 모델 목록이 반환됩니다.
그러나 쿼리 세트 API의 하위 집합도 표시되므로 상위 모델에서 직접 필터링, 생성, 관련 모델 선택 등을 할 수 있습니다.
제거
관련 모델이 하나씩 삭제됩니다.
데이터베이스에서 관계를 삭제합니다.
Keep_ 역방향 플래그를 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 | 클래스 앨범(ormar. 모델):
ormar_config = base_ormar_config 사본()
ID: int = ormar. 정수(prial_key = 참)
이름: str = ormar. 문자열(max_long = 100)
is_est_: bool = ormar. 부울(기본값 = 거짓)
클래스 트랙(ormar. 모델):
ormar_config = base_ormar_config 사본()
ID: int = ormar. 정수(prial_key = 참)
앨범: 옵션 [앨범] = ormar. ForeignKey (앨범)
제목: str = ormar. 문자열(max_long = 100)
위치: int = ormar. 정수()
플레이 카운트: int = ormar. 정수(nullable = 참)
앨범 = 앨범을 기다립니다(이름 = "말리부").저장()
트랙 1 = 트랙을 기다립니다(
앨범 = 앨범, 제목 = "The Bird", 포지션 = 1, play_count = 30,
).저장 ()
# 관계의 반대편에서 프록시를 통해 제거
Alum.tracks.를 기다립니다 (track1, stake_ed = 거짓)
# 트랙도 삭제되었습니다
트랙 = 트랙.ts.all을 기다립니다 ()
주장 렌 (트랙) == 0
|
분명한
한 번의 통화로 모든 관련 모델이 삭제됩니다.
또한 데이터베이스에서 관계를 삭제합니다.
Keep_ 역방향 플래그를 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 | 클래스 앨범(ormar. 모델):
ormar_config = base_ormar_config 사본()
ID: int = ormar. 정수(prial_key = 참)
이름: str = ormar. 문자열(max_long = 100)
is_est_: bool = ormar. 부울(기본값 = 거짓)
클래스 트랙(ormar. 모델):
ormar_config = base_ormar_config 사본()
ID: int = ormar. 정수(prial_key = 참)
앨범: 옵션 [앨범] = ormar. ForeignKey (앨범)
제목: str = ormar. 문자열(max_long = 100)
위치: int = ormar. 정수()
플레이 카운트: int = ormar. 정수(nullable = 참)
앨범 = 앨범을 기다립니다(이름 = "말리부").저장()
트랙 1 = 트랙을 기다립니다(
앨범 = 앨범,
제목 = "새",
위치 = 1,
플레이_카운트=30,
).저장 ()
트랙 2 = 트랙을 기다립니다(
앨범 = 앨범,
제목 = "하트는 가망이 없다",
위치 = 2,
플레이_카운트=20,
).저장 ()
# 관계만 제거 -> 트랙의 외부 키를 지웁니다.
대기 중인 앨범.트랙.클리어()
# 트랙도 제거합니다
Album 을 기다립니다. 트랙. 클리어 (_sed = 거짓)
|