簡體   English   中英

使用 SQLAlchemy,我可以在查詢中加入 Python object(即列表)嗎?

[英]Using SQLAlchemy, can I join a Python object (i.e. a list) within a Query?

假設我有一個看起來像這樣的 Postgres-DB 表(有更多行):

|------|-------|
|col1  |col 2  |
|------|-------|
|a1    |10     |
|a2    |55     |
|a3    |24     |
|------|-------|

Python 中的列表如下所示:

|------|-------|
|a1    |1      |
|a3    |2      |
|------|-------|

在運行時,我現在想(內部)將表與列表連接起來,而不必將列表作為 DB object 保存。

起作用的是使用列表和 SQLAlchemys .in_運算符進行過濾。

但是,當我嘗試db.query(Table).join(list)時,出現此錯誤:

sqlalchemy.exc.NoInspectionAvailable:沒有適用於 object 類型的檢測系統

當然,一種解決方法是首先使用過濾器運算符從數據庫中獲取所有元素,然后使用 python 進行連接......但感覺應該有一個

如果我理解正確並且您只想獲取col1 == tuple[0]的行,則可以使用 sqlalchemy filterin_運算符:

tuples_list = [('a1', 1), ('a3', 2)]

search_dict = dict(tuples_list)  # Convert to dict 

res = db.query(Table).filter(Table.col1.in_(search_dict.keys())).all()

for instance in res:
    instance.col2 = instance.col2 + search_dict[instance.col1]

這里還有一個不使用 ORM 的詳細示例: SQLAlchemy IN 子句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM