sql >> Database >  >> RDS >> Mysql

Hoe gebruik ik Django met verouderde alleen-lezen databasetabellen met samengestelde primaire sleutels?

U hebt het dan over een legacy READONLY-database, misschien kunt u een extern schema (views) maken zonder PK's met meerdere kolommen. U kunt bijvoorbeeld veldsleutels samenvoegen. Hier en voorbeeld:

Bijvoorbeeld:

Tabellen:

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 schema te lezen door 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

django-modellen:

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'    

Je kunt de techniek verfijnen om varchar-sleutels te maken om met indexen te kunnen werken . Ik schrijf geen voorbeelden meer omdat ik niet weet wat uw databasemerk is.

Meer informatie:

Doe Django modellen ondersteunen primaire sleutels met meerdere kolommen?

ticket 373

Alternatieve methoden




  1. Hoe maak ik een cirkeldiagram dat de hoeveelheid weergeeft van iets dat door iedereen is geregistreerd?

  2. Unieke geïndexeerde waarden overschrijven

  3. Het Microsoft Office-product dat weigert te sterven

  4. MySQL LIKE-query met onderstrepingsteken