आपको UNIQUE INDEX
जोड़ना होगा मैन्युअल रूप से एलेम्बिक के execute
का उपयोग करना तरीका। अपनी माइग्रेशन स्क्रिप्ट में कुछ इस तरह जोड़ें।
from alembic import op
# ...
def upgrade():
# ...
op.execute(
""" CREATE UNIQUE INDEX users_normalized_username
ON users
(lower(username))
"""
)
def downgrade():
# ...
op.execute("DROP INDEX users_normalized_username")
आप एक ColumnProperty
भी जोड़ सकते हैं इसलिए आपके पास username
. के सामान्यीकृत प्रतिनिधित्व तक पहुंच है ।
from sqlalchemy import Column, String, func, orm
class User(Base):
__tablename__ = 'users'
username = Column(String(32))
normalized_username = orm.column_property(func.lower(username))
# ...
यह आपके डेटाबेस में एक अतिरिक्त कॉलम नहीं बनाएगा लेकिन आप इसके खिलाफ क्वेरी और तुलना करने में सक्षम होंगे।
session.query(User).filter(User.normalized_username == func.lower(username)).first()