sql >> Databasteknik >  >> RDS >> PostgreSQL

Flask-SQLAlchemy Gemener Index - hoppa över funktion, stöds inte av SQLAlchemy-reflektion

Du måste lägga till UNIQUE INDEX manuellt med alembics execute metod. Lägg till något liknande i ditt migreringsskript.

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 också lägga till en ColumnProperty så att du har tillgång till den normaliserade representationen av 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))

    # ...

Detta skapar inte en extra kolumn i din databas men du kommer att kunna fråga och jämföra mot den.

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


  1. Google BigQuery ODBC-drivrutin

  2. Oracle - ORA-06502:PL/SQL:numeriskt eller värdefel (DBMS_OUTPUT)

  3. Vad är strängsammansättningsoperatorn i Oracle?

  4. Hur ändrar du datatypen för en kolumn i SQL Server?