Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać Django ze starszymi tabelami bazy danych tylko do odczytu ze złożonymi kluczami podstawowymi?

Mówisz wtedy o starszej bazie danych READONLY, być może możesz stworzyć zewnętrzny schemat (widoki) bez wielokolumnowych PK. Na przykład możesz łączyć klucze pól. Tutaj i przykład:

Na przykład:

Stoły:

create table A (
  a1 int not null,
  a2 int not null,
  t1 varchar(100),
  primary key (a1, a2)
)

create table B (
  b1 int not null,
  b2 int not null,
  a1 int not null,
  a2 int not null,
  t1 varchar(100),
  primary key (b1, b2),
  constraint b_2_a foreign key (a1,a2) 
  references A (a1, a2)
)

Zewnętrzny schemat do odczytania przez django:

Create view vA as 
select 
   a1* 1000000 + a2 as a, A.* 
from A

Create view vB as 
select 
   b1* 1000000 + b2 as b, 
   a1* 1000000 + a2 as a, B.* 
from B

modele django:

class A(models.Model):
    a = models.IntegerField(  primary_key=True )
    a1 = ...
    class Meta(CommonInfo.Meta):
        db_table = 'vA'    

class B(models.Model):
    b = models.IntegerField(  primary_key=True )
    b1 = ...
    a = models.ForeignKey( A )
    a1 = ...
    class Meta(CommonInfo.Meta):
        db_table = 'vB'    

Możesz udoskonalić technikę tworzenia kluczy varchar, aby móc pracować z indeksami . Nie piszę więcej próbek, ponieważ nie wiem, jaka jest Twoja marka bazy danych.

Więcej informacji:

Czy Django modele obsługują wielokolumnowe klucze podstawowe?

bilet 373

Metody alternatywne




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usunąć duplikaty za pomocą tylko zapytania MySQL?

  2. Schemat XSD do MySQL

  3. RMySQL dbWriteTable z field.types

  4. PDO::__construct():Serwer wysłał zestaw znaków (255) nieznany klientowi. Proszę zgłosić się do programistów

  5. Hasło nie jest weryfikowane za pomocą funkcji password_verify