2016-12-20 10 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-01-01 00:00:00

ответ

1

SQL-оператор выглядит хорошо. Выполнял ли этот оператор на сервере БД напрямую с помощью клиента? Вы получили только одну запись?

Если да, думаю, ваша проблема может заключаться в self.search([]). Это функция, которую вы написали? выполняет ли поиск в записях? Если да, возможно ли, что вы ищете на основе пустой строки, и это возвращает все 3 записи вашей таблицы?

Если self.search ([]) возвращает массив из трех элементов, вы просто делаете SELECT distinct в той же строке три раза.

Если это ваша проблема, то вы можете это исправить, удалив эту часть:

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

Именно эта последняя подсказка здесь проблема. С 3 строками в базе данных поиск вернет «RecordSet» с 3 записями. Таким образом, запрос будет (для каждого) вызываться 3 раза, который будет выводить 3 раза в одну строку. – CZoellner