PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chỉ mục chữ thường của Flask-SQLAlchemy - bỏ qua chức năng, không được phản ánh SQLAlchemy hỗ trợ

Bạn cần thêm UNIQUE INDEX thủ công bằng cách sử dụng execute của alembic phương pháp. Thêm một cái gì đó như thế này vào tập lệnh di chuyển của bạn.

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

Bạn cũng có thể thêm một ColumnProperty vì vậy bạn có quyền truy cập vào biểu diễn chuẩn hóa của 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))

    # ...

Điều này sẽ không tạo thêm một cột trong cơ sở dữ liệu của bạn nhưng bạn sẽ có thể truy vấn và so sánh với nó.

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. Viết truy vấn cho nhiều bảng trong php

  2. PostgreSQL + Hibernate + Spring tự động tạo cơ sở dữ liệu

  3. Tạo chuỗi PostgreSQL cho một trường (không phải là ID của bản ghi)

  4. Tại sao tôi không thể loại trừ các cột phụ thuộc khỏi `GROUP BY` khi tôi tổng hợp theo một khóa?

  5. HEX () và UNHEX () của MySQL tương đương trong Postgres?