PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Flask-SQLAlchemy-Index in Kleinbuchstaben – Funktion zum Überspringen, wird von der SQLAlchemy-Reflektion nicht unterstützt

Sie müssen den UNIQUE INDEX hinzufügen manuell mit execute von alembic Methode. Fügen Sie Ihrem Migrationsskript so etwas hinzu.

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

Sie könnten auch eine ColumnProperty hinzufügen Sie haben also Zugriff auf die normalisierte Darstellung des 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))

    # ...

Dadurch wird keine zusätzliche Spalte in Ihrer Datenbank erstellt, aber Sie können sie abfragen und vergleichen.

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