@ Zzzeek এর উত্তর সম্পূর্ণ করতে ।
আপনি যদি ডিইএসসি সহ একটি যৌগিক সূচক যুক্ত করতে চান এবং ওআরএম ঘোষণামূলক পদ্ধতিটি ব্যবহার করতে পারেন তবে আপনি নীচের মতো করতে পারেন।
তদুপরি, আমি এসকিউএসএলেচেমির ফাংশনাল ইনডেক্সের ডকুমেন্টেশনের সাথে লড়াই করছিলাম, কীভাবে প্রতিস্থাপন করা যায় তা জানার চেষ্টা করছি 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")
__table_args__ = (
db.Index('gps_report_timestamp_device_id_idx', timestamp.desc(), device_id),
)
যদি আপনি আলেম্বিক ব্যবহার করেন তবে আমি ফ্লাস্ক-মাইগ্রেট ব্যবহার করছি, এটি এমন কিছু উত্পন্ন করে:
from alembic import op
import sqlalchemy as sa
from sqlalchemy.schema import Sequence, CreateSequence
def upgrade():
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():
op.drop_index('gps_report_timestamp_device_id_idx', table_name='gps_report')
op.drop_table('gps_report')
op.execute(sa.schema.DropSequence(sa.Sequence('gps_report_id_seq')))
শেষ অবধি আপনার পোস্টগ্রিজ এসকিউএল ডাটাবেসে নিম্নলিখিত টেবিল এবং সূচিপত্রগুলি থাকা উচিত:
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)