sql >> Databáze >  >> RDS >> PostgreSQL

Index malých písmen Flask-SQLAlchemy – funkce přeskakování, není podporována odrazem SQLAlchemy

Budete muset přidat UNIQUE INDEX ručně pomocí alembicova execute metoda. Přidejte něco takového do skriptu migrace.

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

Můžete také přidat ColumnProperty takže máte přístup k normalizované reprezentaci 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))

    # ...

Tím se ve vaší databázi nevytvoří další sloupec, ale budete s ním moci dotazovat a porovnávat jej.

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


  1. Android – Jak mohu předat data související se dvěma tabulkami metodě vkládání poskytovatele obsahu

  2. Filtrovat podle COUNT(*)?

  3. Monitoring Galera Cluster pro MySQL nebo MariaDB – porozumění metrikám (aktualizováno)

  4. Formát data MySQL – co potřebujete vědět