Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua sokongan berbilang pangkalan data dalam rangka kerja Django

Petua sokongan berbilang pangkalan data dalam rangka kerja Django

WBOY
WBOYasal
2023-06-18 10:52:401821semak imbas

Django ialah rangka kerja web Python yang popular dengan mekanisme ORM (Object Relational Mapping) yang sangat baik membolehkan pembangun mengendalikan pangkalan data dengan mudah. Walau bagaimanapun, dalam beberapa projek sebenar, pelbagai pangkalan data perlu disambungkan Pada masa ini, beberapa kemahiran diperlukan untuk memastikan kestabilan dan kecekapan pembangunan projek.

Dalam Django, sokongan berbilang pangkalan data adalah berdasarkan fungsi yang disediakan oleh rangka kerja Django itu sendiri. Di sini, kami akan memperkenalkan beberapa petua sokongan berbilang pangkalan data untuk membantu anda menghadapi situasi berbilang pangkalan data dengan lebih baik dalam pembangunan Django.

Langkah pertama ialah mengkonfigurasi berbilang pangkalan data

Untuk mendayakan sokongan berbilang pangkalan data rangka kerja Django, anda perlu menulis beberapa kod fail konfigurasi terlebih dahulu. Dalam Django, kami boleh mengkonfigurasinya dalam fail settings.py. Kod khusus adalah seperti berikut:

PANGKALAN DATA = {

'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'default_database',
    'USER': 'user_name',
    'PASSWORD': 'user_password',
    'HOST': 'localhost',
    'PORT': '5432',
},
'other_db': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'other_database',
    'USER': 'user_name',
    'PASSWORD': 'user_password',
    'HOST': 'localhost',
    'PORT': '5432',
},

}

Ini ialah fail konfigurasi yang mengandungi dua pangkalan data. Antaranya, kita boleh membezakan pangkalan data yang berbeza melalui lalai dan other_db. Setiap pangkalan data mesti menentukan parameter seperti ENGINE (nama pemacu pangkalan data), NAMA (nama pangkalan data), PENGGUNA (nama pengguna), KATA LALUAN (kata laluan), HOST (nama hos) dan PORT (nombor port).

Dalam pembangunan sebenar, anda mungkin perlu menyambung ke pelbagai jenis pangkalan data, seperti MySQL, SQLite, Oracle dan SQL Server, dsb. Dalam kes ini, anda boleh mengikuti dokumentasi Django untuk konfigurasi.

Langkah kedua ialah menggunakan berbilang pangkalan data dalam model

Dalam Django, model ialah cara untuk menyimpan data ke dalam pangkalan data. Untuk menggunakan pangkalan data yang berbeza, kita perlu menentukan sambungan pangkalan data tertentu dalam model.

Andaikan kita mempunyai dua model, satu adalah Pengguna dan satu lagi ialah Produk:

kelas Pengguna(model.Model):

name = models.CharField(max_length=255)

kelas Produk(model.Model):

name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE)

Di sini, kami menggunakan model.ForeignKey untuk menyambungkan model Produk dan Pengguna. Sekarang, kita perlu menyimpan model Pengguna dalam satu pangkalan data dan model Produk dalam pangkalan data lain. Dalam Django, kita perlu menentukan pangkalan data untuk setiap model data:

class User(models.Model):

name = models.CharField(max_length=255)

class Meta:
    using = 'default'

class Product(models.Model):

name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE)

class Meta:
    using = 'other_db'

Dalam contoh ini, kami menentukan model Pengguna sebagai sambungan lalai dan model Produk sebagai sambungan other_db. Nama pangkalan data ini adalah sama seperti yang dikonfigurasikan sebelum ini.

Perlu diingat bahawa apabila menggunakan berbilang pangkalan data, kita perlu menentukan pangkalan data untuk setiap model. Jika tidak, Django akan menggunakan sambungan pangkalan data lalai secara lalai, yang boleh menyebabkan masalah dalam aplikasi.

Langkah ketiga ialah mengendalikan berbilang pangkalan data dalam paparan

Dalam paparan, kita mungkin perlu menggunakan berbilang sambungan pangkalan data. Untuk mengendalikan berbilang pangkalan data dalam paparan, kita perlu mengikuti langkah berikut.

Pertama, anda perlu mengimport pautan pangkalan data:

daripada sambungan import django.db

Penyataan import ini akan mengembalikan kelas yang mengandungi semua sambungan pangkalan data.

Seterusnya, kita perlu mencipta sambungan pangkalan data yang boleh dibaca dan boleh ditulis. Terdapat dua cara untuk membuat sambungan pangkalan data:

  1. sambungan['default']: Gunakan sambungan pangkalan data lalai.
  2. sambungan['other_db']: Gunakan sambungan pangkalan data tertentu.

Dalam contoh ini, kami akan menggunakan sambungan other_db:

def my_view(request):

with connections['other_db'].cursor() as cursor:
    cursor.execute('SELECT * FROM some_table')
    row = cursor.fetchone()

return HttpResponse(str(row))

Di sini, kami menggunakan dengan pengurus konteks untuk Mengendalikan sambungan pangkalan data. Kami menggunakan kaedah kursor() untuk mencipta objek kursor untuk menanyakan pangkalan data, dan menggunakan execute() untuk melaksanakan pernyataan pertanyaan. Akhir sekali, kami menggunakan kaedah fetchone() untuk mendapatkan hasil pertanyaan.

Seperti yang anda lihat daripada contoh di atas, kami boleh menggunakan pernyataan dengan dalam paparan untuk mengawal sambungan pangkalan data. Dengan cara ini kita boleh bertukar antara pangkalan data yang berbeza.

Ringkasan

Django menyediakan sokongan berbilang pangkalan data yang baik. Anda boleh menggunakan pelbagai jenis pangkalan data (seperti MySQL, PostgreSQL, SQLite, dll.) untuk berinteraksi dalam projek, dan anda boleh menggunakan pangkalan data yang berbeza daripada model yang berbeza. Dengan menggunakan sambungan pangkalan data secara rasional, anda boleh mengawal proses interaksi data dengan lebih baik dan mengelakkan masalah, dengan itu meningkatkan kestabilan dan kecekapan pembangunan projek.

Atas ialah kandungan terperinci Petua sokongan berbilang pangkalan data dalam rangka kerja Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn