@ Zzzeek का जवाब पूरा करने के लिए ।
यदि आप DESC के साथ एक समग्र सूचकांक जोड़ना चाहते हैं और ORM घोषणात्मक विधि का उपयोग कर सकते हैं जो आप निम्नानुसार कर सकते हैं।
इसके अलावा, मैं SQSAlchemy के फंक्शनल इंडेक्स डॉक्यूमेंटेशन के साथ संघर्ष कर रहा था , यह पता लगाने की कोशिश कर रहा था कि कैसे विकल्प का उपयोग किया जाए mytable.c.somecol
।
from sqlalchemy import Index
Index('someindex', mytable.c.somecol.desc())
हम केवल मॉडल संपत्ति का उपयोग कर सकते हैं और .desc()
उस पर कॉल कर सकते हैं:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class GpsReport(db.Model):
__tablename__ = 'gps_report'
id = db.Column(db.Integer, db.Sequence('gps_report_id_seq'), nullable=False, autoincrement=True, server_default=db.text("nextval('gps_report_id_seq'::regclass)"))
timestamp = db.Column(db.DateTime, nullable=False, primary_key=True)
device_id = db.Column(db.Integer, db.ForeignKey('device.id'), primary_key=True, autoincrement=False)
device = db.relationship("Device", back_populates="gps_reports")
# Indexes
__table_args__ = (
db.Index('gps_report_timestamp_device_id_idx', timestamp.desc(), device_id),
)
यदि आप अलेम्बिक का उपयोग करते हैं, तो मैं फ्लास्क-माइग्रेट का उपयोग कर रहा हूं, यह कुछ ऐसा उत्पन्न करता है:
from alembic import op
import sqlalchemy as sa
# Added manually this import
from sqlalchemy.schema import Sequence, CreateSequence
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
# Manually added the Sequence creation
op.execute(CreateSequence(Sequence('gps_report_id_seq')))
op.create_table('gps_report',
sa.Column('id', sa.Integer(), server_default=sa.text("nextval('gps_report_id_seq'::regclass)"), nullable=False),
sa.Column('timestamp', sa.DateTime(), nullable=False))
sa.Column('device_id', sa.Integer(), autoincrement=False, nullable=False),
op.create_index('gps_report_timestamp_device_id_idx', 'gps_report', [sa.text('timestamp DESC'), 'device_id'], unique=False)
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index('gps_report_timestamp_device_id_idx', table_name='gps_report')
op.drop_table('gps_report')
# Manually added the Sequence removal
op.execute(sa.schema.DropSequence(sa.Sequence('gps_report_id_seq')))
# ### end Alembic commands ###
अंत में आपको अपने पोस्टग्रेक्यूएल डेटाबेस में निम्न तालिका और अनुक्रमित होना चाहिए:
psql> \d gps_report;
Table "public.gps_report"
Column | Type | Collation | Nullable | Default
-----------------+-----------------------------+-----------+----------+----------------------------------------
id | integer | | not null | nextval('gps_report_id_seq'::regclass)
timestamp | timestamp without time zone | | not null |
device_id | integer | | not null |
Indexes:
"gps_report_pkey" PRIMARY KEY, btree ("timestamp", device_id)
"gps_report_timestamp_device_id_idx" btree ("timestamp" DESC, device_id)
Foreign-key constraints:
"gps_report_device_id_fkey" FOREIGN KEY (device_id) REFERENCES device(id)