PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Indeks Huruf Kecil Flask-SQLAlchemy - melewatkan fungsional, tidak didukung oleh refleksi SQLAlchemy

Anda harus menambahkan UNIQUE INDEX secara manual menggunakan execute a alembic metode. Tambahkan sesuatu seperti ini ke skrip migrasi Anda.

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

Anda juga dapat menambahkan ColumnProperty jadi Anda memiliki akses representasi normal dari 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))

    # ...

Ini tidak akan membuat kolom tambahan di database Anda, tetapi Anda dapat membuat kueri dan membandingkannya.

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. Masukkan pemicu untuk Perbarui tabel lain menggunakan PostgreSQL

  2. Memahami Batasan Pemeriksaan di PostgreSQL

  3. Hasilkan sql dengan subquery sebagai kolom dalam pernyataan pilih menggunakan SQLAlchemy

  4. Cara Mendapatkan Tanggal Saat Ini di PostgreSQL

  5. 2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Alfanumerik di PostgreSQL