models.py 1.68 KB
from datetime import datetime
from sqlalchemy import (
    Column,
    String,
    Integer,
    ForeignKey,
    ForeignKeyConstraint,
    )
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()


class Provinsi(Base):
    __tablename__ = 'ref_propinsi'
    kd_propinsi = Column(String(2), primary_key=True)
    nm_propinsi = Column(String(30), nullable=False)


class Kabupaten(Base):
    __tablename__ = 'ref_dati2'
    kd_propinsi = Column(
        String(2), ForeignKey(Provinsi.kd_propinsi), primary_key=True)
    kd_dati2 = Column(String(2), primary_key=True)
    nm_dati2 = Column(String(30), nullable=False)


class Kecamatan(Base):
    __tablename__ = 'ref_kecamatan'
    kd_propinsi = Column(String(2), primary_key=True)
    kd_dati2 = Column(String(2), primary_key=True)
    kd_kecamatan = Column(String(3), primary_key=True)
    nm_kecamatan = Column(String(30), nullable=False)
    __table_args__ = (
        ForeignKeyConstraint([
            kd_propinsi, kd_dati2],
            [Kabupaten.kd_propinsi, Kabupaten.kd_dati2]),)


class Kelurahan(Base):
    __tablename__ = 'ref_kelurahan'
    kd_propinsi = Column(String(2), primary_key=True)
    kd_dati2 = Column(String(2), primary_key=True)
    kd_kecamatan = Column(String(3), primary_key=True)
    kd_kelurahan = Column(String(3), primary_key=True)
    kd_sektor = Column(String(2), nullable=False)
    nm_kelurahan = Column(String(30), nullable=False)
    no_kelurahan = Column(Integer)
    kd_pos_kelurahan = Column(String(5))
    __table_args__ = (
        ForeignKeyConstraint(
            [kd_propinsi, kd_dati2, kd_kecamatan],
            [Kecamatan.kd_propinsi, Kecamatan.kd_dati2,
             Kecamatan.kd_kecamatan]),)