我正在使用SQLAlchemy和SQLite3構建查詢,其中我想選擇其中String列包含特定子字符串的行。什麼是完成這個最好的方法?SQLAlchemy查詢列中包含子字符串的位置
17
A
回答
21
按db.table.column.like('%needle%')
篩選。對於不區分大小寫的搜索,還有ilike
。
對於一個發燒友界面,你可以允許已知的「dir」通配符。
if '*' in needle or '_' in needle:
looking_for = needle.replace('_', '__')\
.replace('*', '%')\
.replace('?', '_')
else:
looking_for = '%{0}%'.format(needle)
result = db.table.filter(db.table.column.ilike(looking_for))
注:
- 的
db.table.filter
和db.table.column
爲SQLSoup
(SQLSoup如果數據庫是由另一個應用程序所做的是有用的) - 爲SQLAlchemy的核心是
select(column_list).where(table.c.column.ilike(expr))
。當您希望從原始SQL獲得所有權限時,無需使用字符串插值手動編寫語句(使用SQLSoup進行內省,因此您無需聲明表) - SQLAlchemy Declarative (中瓶使用的)是
Model.query.filter(Model.field.ilike(expr))
11
雖然table.c.column.like("%...%")
應該工作,還有一個更直接的方式來表達你想要什麼:
table.c.column.contains("needle")
這通常會產生相同的SQL查詢,但它更好地閱讀爲外行。 請注意,包含似乎不能逃脫「_」和「%」。
+0
像(%...%)不是直接的,不是 - 但我有一組表(模型),將field.contains(k)轉換爲字段LIKE'%%'|| k || '%%' - 沒有呈現正確的結果。 – shermy 2016-05-23 07:59:50
40
試試這個
Model.query.filter(Model.columnName.contains('sub_string'))
相關問題
- 1. 檢查一個字符串是否包含正確位置的子字符串
- 2. 檢查包含子字符串列表的字符串
- 3. SELECT查詢字符串包含'%'字符
- 4. Amazon DynamoDB查詢其中包含子字符串的項目
- 5. 包含在字符串列表中的檢查字符串
- 6. 字符串core.logic查詢包含
- 7. 查詢包含許多字符串
- 8. MySQL查詢字符串包含
- 9. sql查詢字符串包含在C#
- 10. Mongoose查詢字段不包含子字符串
- 11. 如何包含在查詢字符串中的特殊字符
- 12. 檢查字符串是否包含字(不是子字符串!)
- 13. 檢查字符串列表中的字符子集是否包含在另一個字符串列表中
- 14. SQLite字符串包含其他字符串查詢
- 15. 檢查字符串包含的字符
- 16. Oracle查詢查找字符串不包含字符
- 17. 檢查字符串是否包含子字符串
- 18. 檢查字符串中的指定位置是否包含字母或數字
- 19. 谷歌電子錶查詢返回字符串'包含'
- 20. pandas:查找給定列包含特定子字符串的行
- 21. MySql查詢包含字段中的字符串
- 22. 如何查找在iOS中包含@符號的子字符串
- 23. Symfony的查詢生成器:字符串包含特殊字符
- 24. 程序集查找包含給定字符串中子字符串的字
- 25. Sqlalchemy:查找在文本末尾包含特定字符的字符串
- 26. 熊貓 - 檢查字符串列包含一對字符串
- 27. 需要在查詢字符串列表後包含#anchor
- 28. Linq查詢比較收集是否包含字符串列表
- 29. 從包含特殊字符的字符串中提取子串
- 30. 從包含問題的字符串中移除子字符串
你能告訴我們在燒瓶SQLAlchemy的 – Wally 2015-01-05 13:15:25
@Wally燒瓶SQLAlchemy的查詢是方便包連接到SQLAlchemy的燒瓶。與SQLAlchemy Declarative相比,查詢不會發生變化。 – Laogeodritt 2016-09-22 16:10:59