Index mit mehreren Spalten bei Verwendung der deklarativen ORM-Erweiterung von sqlalchemy
Laut die Dokumentation und die Kommentare in der sqlalchemy.Column
Klasse, sollten wir die Klasse sqlalchemy.schema.Index
angeben einen index, der mehrere Spalten enthält.
Aber das Beispiel zeigt, wie es zu tun, direkt über der Tabelle-Objekt wie folgt:
meta = MetaData()
mytable = Table('mytable', meta,
# an indexed column, with index "ix_mytable_col1"
Column('col1', Integer, index=True),
# a uniquely indexed column with index "ix_mytable_col2"
Column('col2', Integer, index=True, unique=True),
Column('col3', Integer),
Column('col4', Integer),
Column('col5', Integer),
Column('col6', Integer),
)
# place an index on col3, col4
Index('idx_col34', mytable.c.col3, mytable.c.col4)
Wie sollten wir es tun, wenn wir die deklarative ORM Erweiterung?
class A(Base):
__tablename__ = 'table_A'
id = Column(Integer, , primary_key=True)
a = Column(String(32))
b = Column(String(32))
Möchte ich ein index auf Spalte "a" und "b".
InformationsquelleAutor der Frage yorjo | 2011-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese sind nur
Column
Objekte, index=True flag funktioniert in der Regel:wenn Sie möchten, eine composite-index, wieder
Table
vorhanden ist, hier wie üblich haben Sie nicht nur zu erklären, es funktioniert alles die gleichen (stellen Sie sicher, dass Sie auf den letzten 0.6 oder 0.7 für die deklarative A. ein wrapper interpretiert alsColumn
nach der Klassen-Deklaration ist vollständig):0.7 die
Index
werden kann, in derTable
Argumente zu, die mit deklarativen ist über__table_args__
:InformationsquelleAutor der Antwort zzzeek