PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Индекс на долните букви на Flask-SQLAlchemy - функция за пропускане, не се поддържа от отражението на SQLAlchemy

Ще трябва да добавите UNIQUE INDEX ръчно с помощта на execute на alembic метод. Добавете нещо подобно към вашия скрипт за миграция.

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

Можете също да добавите ColumnProperty така че имате достъп до нормализираното представяне на 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))

    # ...

Това няма да създаде допълнителна колона във вашата база данни, но ще можете да правите заявки и да сравнявате с нея.

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. Как да тествам моя ad-hoc SQL с параметри в прозореца за заявка на Postgres

  2. Често срещани грешки при мигриране на PostgreSQL бази данни от On-Prem към AWS RDS

  3. Достатъчно ефективни ли са postgres JSON индексите в сравнение с класическите нормализирани таблици?

  4. Никой оператор не съответства на даденото име и тип(ове) на аргумента. Може да се наложи да добавите изрични прехвърляния на типа. -- Netbeans, Postgresql 8.4 и Glassfish

  5. Възможно ли е да се предоставят параметри за името на таблица или колона в Prepared Statements или QueryRunner.update()?