sql >> Databáze >  >> RDS >> Mysql

Jak používat Django se staršími databázovými tabulkami pouze pro čtení se složenými primárními klíči?

Mluvíte o starší databázi READONLY, pak možná můžete vytvořit externí schéma (pohledy) bez vícesloupcových PK. Můžete například zřetězit klíče polí. Zde a příklad:

Například:

Tabulky:

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

Externí schéma, které má django přečíst:

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

django modely:

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'    

Můžete vylepšit techniku, abyste vytvořili klíče varchar, aby bylo možné pracovat s indexy . Více ukázek nepíšu, protože nevím, jakou máte značku databáze.

Více informací:

Do Djanga modely podporují primární klíče s více sloupci?

lístek 373

Alternativní metody




  1. Jak zastavit/spustit MySQL pomocí MySQL Workbench

  2. Jak změnit znakovou sadu z latin1 na UTF8 v MySQL

  3. Připravené prohlášení o Postgresql in Rails

  4. Vnitřní spojení &vnější spojení; je důležité pořadí tabulek od?