sqlalchemy的不區分大小寫比較


方法一:collation

參照:https://segmentfault.com/q/1010000010203547

方法是在 db.String 中添加 collation='NOCASE' 描述,即修改為以下模型即可

class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64, collation='NOCASE'), unique=True, index=True)
    password_hash = db.Column(db.String(128))

之后在查詢時的 username 字段就不會區分大小寫了

注:對於 collation 屬性的修改,flask-migration 並不會檢測出,需要手動寫 migrate 語句

 

方法二:

您可以使用lowerupper過濾器中的函數:

from sqlalchemy import func
user = models.User.query.filter(func.lower(User.username) == func.lower("GaNyE")).first()

 

方法三:

另一種選擇是使用ilike而不是like:

.query.filter(Model.column.ilike("ganye"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM