Lewati ke isi

Hapus data dari database

Metode berikut memungkinkan Anda untuk menghapus data dari database.

  • delete(each: bool = False, **kwargs) -> int

  • model

    • Metode penghapusan model ()
    • Agen Setelan Kueri

    • QuerysetProxy.remove () metode

    • QuerysetProxy.clear () metode

menghapus

delete(each: bool = False, **kwargs) -> int

Penghapusan level QuerySet digunakan untuk menghapus beberapa rekaman sekaligus.

Anda harus memfilter QuerySet terlebih dahulu, atau memberikan masing-masing = Bendera yang benar untuk menghapus seluruh tabel.

Jika Anda tidak memberikan bendera atau filter ini, QueryDefinitionError dinaikkan.

Mengembalikan jumlah baris yang telah dihapus.

 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())

metode model

Setiap contoh model memiliki seperangkat metode untuk menyimpan, memperbarui, atau memuat dirinya sendiri.

menghapus

Anda dapat menghapus contoh model dengan memanggil metode hapus ().

!!!Tip Baca lebih lanjut tentang metode hapus () dalam metode model

Metode QuerysetProxy

Saat mengakses bidang ManyToMany dan ReverseForeignKey yang relevan secara langsung, daftar model terkait dikembalikan.

Tetapi juga memaparkan subset dari QuerySet API, sehingga Anda dapat memfilter, membuat, memilih model terkait, dll. langsung dari model induk.

menghilangkan

Model yang relevan dihapus satu per satu.

Hapus hubungan dalam database.

Menentukan bendera tetap\ _ terbalik sebagai Falseormar juga menghapus model yang relevan dari database.

 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
Album Kelas (ormar. Model):
    ormar _ config = base _ ormar _ config copy ()

    Id: int = ormar. Integer (primary _ key = Benar)
    Nama: str = ormar. String (max _ length = 100)
    is _ best _ seller: bool = ormar. Boolean (default = Salah)

Jalur Kelas (ormar. Model):
    ormar _ config = base _ ormar _ config copy ()

    Id: int = ormar. Integer (primary _ key = Benar)
    Album: Opsional [Album] = ormar. ForeignKey (Album)
    Judul: str = ormar. String (max _ length = 100)
    Posisi: int = ormar. Integer ()
    play _ count: int = ormar. Integer (nullable = Benar)


Album = await Album (nama = "Malibu").save ()
Track1 = menunggu Lagu (
    Album = album, judul = "The Bird," posisi = 1, play _ count = 30,
).simpan ()
# hapus melalui proxy dari sisi relasi terbalik
Tunggu album.tracks.remove (track1, tetap _ terbalik = Salah)

# trek juga dihapus
Trek = menunggu Track.objeks.all ()
Tegaskan len (trek) = = 0

bening

Satu panggilan menghapus semua model terkait.

Juga hapus hubungan dalam database.

Menentukan bendera tetap\ _ terbalik sebagai Falseormar juga menghapus model yang relevan dari database.

 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
Album Kelas (ormar. Model):
    ormar _ config = base _ ormar _ config copy ()

    Id: int = ormar. Integer (primary _ key = Benar)
    Nama: str = ormar. String (max _ length = 100)
    is _ best _ seller: bool = ormar. Boolean (default = Salah)

Jalur Kelas (ormar. Model):
    ormar _ config = base _ ormar _ config copy ()

    Id: int = ormar. Integer (primary _ key = Benar)
    Album: Opsional [Album] = ormar. ForeignKey (Album)
    Judul: str = ormar. String (max _ length = 100)
    Posisi: int = ormar. Integer ()
    play _ count: int = ormar. Integer (nullable = Benar)


Album = await Album (nama = "Malibu").save ()
Track1 = menunggu Lagu (
    Album = album,
    Judul = "Burung,"
    Posisi = 1,
    mainkan _ hitung = 30,
).simpan ()
Track2 = menunggu Lagu (
    Album = album,
    Judul = "Hati tidak punya kesempatan,"
    Posisi = 2,
    bermain _ hitung = 20,
).simpan ()

# menghapus hubungan saja - > membersihkan kunci asing di trek
Menunggu album.tracks.clear ()

# menghapus juga trek
Tunggu album.tracks.clear (tetap _ terbalik = Salah)