sql >> Database teknologi >  >> RDS >> PostgreSQL

Flask-SQLAlchemy Indeks for små bogstaver - overspringsfunktion, ikke understøttet af SQLAlchemy-refleksion

Du skal tilføje det UNIQUE INDEX manuelt ved at bruge alembics execute metode. Tilføj noget som dette til dit migreringsscript.

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

Du kan også tilføje en ColumnProperty så du har adgang til den normaliserede repræsentation af 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))

    # ...

Dette vil ikke oprette en ekstra kolonne i din database, men du vil være i stand til at forespørge og sammenligne med den.

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


  1. Nem måde at vælge den højre kolonne som primær nøgle for en given tabel

  2. Forståelse af SQL Server Always Encrypted

  3. MySQL High Availability Framework Forklaret – Del III:Fejlscenarier

  4. Hvordan kan jeg lave HTTP-anmodninger fra SQL-serveren?