Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Django dan koneksi database hanya-baca

Saya mengalami masalah yang sama (menggunakan Django 1.11) dan pertanyaan ini ada di bagian atas hasil Google saya untuk itu.

Solusi awal Anda hanya kehilangan satu bagian penting. Anda perlu memberi tahu Django model basis data apa yang digunakan 'C' dan 'D'. Apa yang berhasil untuk saya:

class ExternalModel(models.Model):
    class Meta:
        managed = False
        abstract = True    
        app_label = 'support'

Kemudian beri tahu router basis data Anda bagaimana berperilaku saat menemukan app_label di bagian allow_migrate():

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label == 'support':
            return False
        return (db == 'default')

Saya tidak yakin itu adalah solusi yang paling benar di mata tim Django, tetapi efeknya adalah allow_migrate() mengembalikan False untuk model apa pun yang ditentukan dengan nilai atribut app_label itu.

Django dokumentasi pada router tidak menyebutkan ini secara eksplisit (atau, setidaknya dengan contoh kode model yang memperjelas bagaimana ORM meneruskan nilai untuk 'db' ke allow_migrate()), tetapi antara atribut 'app_label' dan 'managed' Anda bisa mendapatkannya untuk bekerja*.

* Dalam kasus saya defaultnya adalah postgres dan database read-only adalah Oracle 12 melalui cx_Oracle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengaktifkan SSL/TLS untuk MySQL di Ubuntu

  2. Mengembalikan JSON tidak berfungsi dengan benar

  3. Periksa dan Optimalkan Database MySQL Secara Otomatis dengan Crontab/Cron

  4. MySQL Tampilkan Pengguna

  5. Bagaimana cara mengisi database hanya sekali sebelum metode @Test dalam tes musim semi?