58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
1

Параметры запроса

10.01.2020, 12:36. Показов 577. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть словарь dic который я заполняю данными из запроса. Затем его передаю в функцию get_product_id. Там делаю запрос к БД где аргумент dic[6] это число (тип int). В результате исполнения запроса вылавливаю исключение: SQL query parameters should be a tuple, list or dict; got 368312
Как оно может быть tuple, list or dict если значение параметра это число типа int ?
Если что то это odoo 12
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def download_pdf_file(self, result):
        for row in range(result.numberOfRows):
            dic = {}
            for col in range(result.numberOfColumns):
                if col == 0:  # flname
                    dic[col] = result.ado_results[col][row]
                elif col == 1:  # filebody
                    dic[col] = result.ado_results[col][row].obj
                elif col == 2:  # filesize
                    dic[col] = result.ado_results[col][row]
                elif col == 3:  # filedate
                    dic[col] = result.ado_results[col][row]
                elif col == 4:  # doclist.designatio
                    dic[col] = result.ado_results[col][row]
                elif col == 5:  # articles.designatio
                    dic[col] = result.ado_results[col][row]
                elif col == 6:  # art_id
                    dic[col] = result.ado_results[col][row]
 
            code = self.get_product_id(dic)
 
   def get_product_id(self, dic):
       result = self.env.cr.execute(
           'Select id from product_product where code_search = %s', dic[6])
 
       return result
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2020, 12:36
Ответы с готовыми решениями:

Параметры запроса
Есть запрос который возвращает следующее: <class 'list'>: Далее идет запрос к сторонней БД...

Как правильено вписать параметры для этого post запроса
есть запрос с такими параметрами как именно вписать параметры(data ,json или params) import...

REST API как правильно передать параметры в тело запроса
Всем привет, не могу что-то разобраться с api, как правильно передать параметры в тело запроса ...

Параметры запроса
Всем добрый день! Вопрос, вроде, простой, но ответ не знаю.:( Я сделала отчёт, теперь хочу...

Параметры запроса
Имеется периодический регистр сведений, с двумя измерениями типа «Справочник» - «Пользователь» и...

6
Модератор
Эксперт Python
2687 / 1593 / 513
Регистрация: 21.02.2017
Сообщений: 4,209
Записей в блоге: 1
10.01.2020, 14:01 2
Тебе пиндоским языком написано: SQL query parameters should be a tuple, list or dict

Python
1
2
3
4
def get_product_id(self, dic):
       result = self.env.cr.execute(
           'Select id from product_product where code_search = %s', (dic[6], ))
       return result
ИЛИ

Python
1
2
3
4
def get_product_id(self, dic):
       result = self.env.cr.execute(
           'Select id from product_product where code_search = %s', [dic[6]])
       return result
Добавлено через 1 минуту
И так от себя, лучше использовать это так:

'SELECT id FROM product_product WHERE code_search = %s', [dic[6]])
1
Просто Лис
Эксперт Python
5710 / 3512 / 1052
Регистрация: 17.05.2012
Сообщений: 10,328
Записей в блоге: 9
10.01.2020, 14:27 3
Цитата Сообщение от Senarist Посмотреть сообщение
dic = {}
for col in range(result.numberOfColumns):
if col == 0: # flname
dic[col] = result.ado_results[col][row]
elif col == 1: # filebody
dic[col] = result.ado_results[col][row].obj
Зачем цикл и почему не?
Python
1
2
3
4
5
dic = {
   0: result.ado_results[0][row],
   1: result.ado_results[1][row].obj.
   #…
}
0
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
10.01.2020, 14:34  [ТС] 4
DmFat, это я сам затупил, тип этого dic[6] в БД строковый а у меня число.

Добавлено через 42 секунды
Рыжий Лис, цикл по row все равно нужен, с col согласен, можно и без него...
0
Просто Лис
Эксперт Python
5710 / 3512 / 1052
Регистрация: 17.05.2012
Сообщений: 10,328
Записей в блоге: 9
10.01.2020, 14:57 5
Правильнее вообще изолировать функцию get_product_id от внешних зависимостей:
Python
1
2
3
def get_product_id(self, code_search):
    sql = 'select id from product_product where code_search=%s'
    return self.env.cr.execute(sql, (code_search,))
И вызывать так:
Python
1
code = self.get_product_id(code_search=result.ado_results[6][row])
1
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
11.01.2020, 20:09  [ТС] 6
Рыжий Лис, спасибо, а что имеется в виду под внешней зависимостью?
0
Просто Лис
Эксперт Python
5710 / 3512 / 1052
Регистрация: 17.05.2012
Сообщений: 10,328
Записей в блоге: 9
11.01.2020, 20:28 7
Не совсем правильно выразился. Функция не должна знать тонкости реализации окружающего её кода.

Для работы ей нужна строка - пусть во входных аргументах она принимает строку. Просто рано или поздно захочется переиспользовать эту функцию, и придётся гадать, а почему её надо вызывать func({6:var}) вместо func(var).
1
11.01.2020, 20:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2020, 20:28
Помогаю со студенческими работами здесь

Параметры запроса
Как установить значение параметра запроса как перечисление?Мне надо чтоб при отмеченных флажках 1 и...

Параметры запроса
strSQL = "INSERT INTO Employeer (FIO_Employeer, Post_Employeer) VALUES ('" & FIO_Employeer & "', '"...

Входные параметры запроса
Нужно сделать запрос, по полям из формы. Но проблема в том, что если поле пустое, запрос не выводит...

Параметры для GET запроса
Здравствуйте! Не пойму как лучше решить проблему. Имеется edit1, edit2, checkbox1, checkbox2,...

Параметры запроса в СКД
привет. разработаю отчет с помошю СКД. в запросе де регистра. нужно сделать так что, данные первого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru