sql >> Database >  >> RDS >> PostgreSQL

Flask-SQLAlchemy Index met kleine letters - functioneel overslaan, niet ondersteund door SQLAlchemy-reflectie

U moet de UNIQUE INDEX . toevoegen handmatig met alembic's execute methode. Voeg zoiets toe aan je migratiescript.

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")

U kunt ook een ColumnProperty . toevoegen zodat u toegang heeft tot de genormaliseerde weergave van de 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))

    # ...

Dit zal geen extra kolom in uw database creëren, maar u kunt er wel naar opvragen en er een vergelijking mee maken.

session.query(User).filter(User.normalized_username == func.lower(username)).first()


  1. Hoe SID verschilt van de servicenaam in Oracle tnsnames.ora

  2. Wat zijn triggers in SQL en hoe implementeer je ze?

  3. PGTune-alternatieven - ClusterControl PostgreSQL-configuratie

  4. Leer databaseontwerp met SQL Server Management Studio (SSMS) - deel 2