2015-10-30 43 views
4

其實我有一個代碼從文本文件中獲取必要的細節。將str傳遞給SQL鍊金術查詢

這裏我從文本文件中提取一些id。

然後,我需要將相同的內容傳遞給SQLAlchemy查詢來獲取結果。

但我不會在這裏得到所需的結果。

這裏是代碼:

addys = ','.join('"{}"'.format(''.join(tenant)) for tenant in tenants if tenant) 
#print "%s" % (addys) 

# cleanup and close files 
files.close() 

query1 = query1.filter(model.name == "in-addr.arpa.") 
query2 = query2.filter(model.tenant_id.in_([addys])) 

這裏型 'addys' 的情況如下:

<type 'str'> 

我需要在這裏不是獲得結果。

有人幫我一樣。

注:

雖然打印addys得到結果如下這顯然是正確的:

"1235b3a73ad24b9c86cf301525310b24","cbdf25542c194a069464f69efff4859a" 

回答

3

_in方法應該是一組ID,但你傳遞給它一個列表元素 - 字符串與所有id,除以逗號。你需要分割字符串的ID,並通過他們的名單:

query = query.filter(model.tenant_id.in_(addys.split(','))) 

或更改您以前行:

tenant_ids = [''.join(tenant) for tenant in tenants if tenant] 
query = query.filter(model.tenant_id.in_(tenant_ids)) 
+0

感謝您的答覆。 但它似乎沒有工作。在查詢它進入,如下所示: ['1235b3a73ad24b9c86cf301525310b24'],['cbdf25542c194a069464f69efff4859a'])\ n「] – Murali

+0

如果我正在使用您的第一個解決方案它顯示如下我打印了一個查詢: WHERE domains.tenant_id IN(:tenant_id_1,:tenant_id_2))AS anon_1 – Murali

+1

對不起,我不知道'tenants'的結構,現在第二個解決方案也必須工作。 –

0

您沒有加入字符串,它足以:

addys = [tenant for tenant in tenants if tenant] 

query2 = query2.filter(model.tenant_id.in_(addys)) 
+0

但它不是似乎working.In查詢它越來越在如下:! [「1235b3a73ad24b9c86cf301525310b24」],[「cbdf25542c194a069464f69efff4859a」])\ n「] – Murali

+0

如果我下面您的解決方案價值這裏正在通過列表。 可能是這裏的問題。 \ n也在那裏,可能是一個問題 – Murali