PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Flask-SQLAlchemy Small Case Index - pomijanie funkcji, nieobsługiwane przez odbicie SQLAlchemy

Musisz dodać UNIQUE INDEX ręcznie za pomocą execute alembika metoda. Dodaj coś takiego do swojego skryptu migracji.

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

Możesz także dodać ColumnProperty więc masz dostęp do znormalizowanej reprezentacji 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))

    # ...

Nie spowoduje to utworzenia dodatkowej kolumny w Twojej bazie danych, ale będziesz mógł wykonywać zapytania i porównywać z nią.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie parametru jako nazwy kolumny w funkcji Postgres

  2. Próbuję skopiować plik, ale pojawia się komunikat o błędzie

  3. PostgreSQL:Utwórz tabelę, jeśli nie istnieje AS

  4. Jak wykonać zapytanie wybierające w bloku DO?

  5. Jak zautomatyzować replikację PostgreSQL 12 i przełączanie awaryjne za pomocą repmgr — część 2