2016-12-20 32 views
1

我有總共3行數據庫和一行ID = 1,在控制檯顯示3行而不是一個!返回不同於sql statment odoo 9

@api.multi 
    def call_func(self): 
     result = [] 
     for data in self.search([]): 
      self._cr.execute('''select distinct 
        date 
       from 
        mytable 
       WHERE id = 1''') 
      for line in self._cr.dictfetchall(): 
       print line["date"] 

我增加了不同但不工作。

輸出是:

2016-01-01 00:00:00 
2016-01-01 00:00:00 
2016-01-01 00:00:00 

我需要2016年1月1日00:00:00

回答

1

的SQL語句看起來不錯。您是否直接使用客戶端在數據庫服務器上執行該語句?你只有一個記錄?

如果是,我認爲你的問題可能在於self.search([])。這是你寫的功能嗎?是否對記錄執行搜索?如果是這樣,是否有可能基於空字符串進行搜索,並返回表的所有3條記錄?

如果self.search([])返回3個元素的數組,那麼您只需在同一行上執行SELECT distinct三次。

如果這是你的問題,那麼你可以通過去除這部分解決這個問題:

for data in self.search([]): 
+0

沒錯,這最後一抹是這裏的問題。在數據庫中有3行時,搜索將返回包含3個條目的「RecordSet」。因此,查詢將(每個)執行3次,這將輸出相同行的3倍。 – CZoellner