Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Django và các kết nối cơ sở dữ liệu chỉ đọc

Tôi gặp phải vấn đề tương tự (sử dụng Django 1.11) và câu hỏi này nằm ở đầu kết quả Google của tôi cho vấn đề đó.

Giải pháp ban đầu của bạn chỉ thiếu một phần quan trọng. Bạn cần cho Django biết những mô hình cơ sở dữ liệu 'C' và 'D' đang sử dụng. Điều gì đã hiệu quả với tôi:

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

Sau đó, cho bộ định tuyến cơ sở dữ liệu của bạn biết cách hoạt động khi nó gặp phải app_label đó trong phần allow_migrate ():

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

Tôi không chắc đó là giải pháp đúng đắn nhất trong mắt nhóm Django, nhưng hiệu ứng là allow_migrate () trả về False cho bất kỳ mô hình nào được xác định bằng giá trị thuộc tính app_label đó.

Django tài liệu về bộ định tuyến không đề cập đến điều này một cách rõ ràng (hoặc, ít nhất là với các mẫu mã mô hình làm rõ cách ORM chuyển giá trị cho 'db' thành allow_migrate ()), nhưng giữa các thuộc tính 'app_label' và 'Managed', bạn có thể nhận được nó để làm việc *.

* Trong trường hợp của tôi, mặc định là postgres và cơ sở dữ liệu chỉ đọc là Oracle 12 thông qua 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. Tính toán bán kính tọa độ gps

  2. LOAD DATA LOCAL INFILE không hoạt động từ php 5.5 bằng cách sử dụng PDO

  3. Chọn tất cả các cột bắt đầu bằng XXX bằng ký tự đại diện?

  4. Một MySQL DELETE thành công trả về điều gì? Làm cách nào để kiểm tra xem XÓA có thành công không?

  5. PHP / MYSQL Thêm nút vào cột