Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2021, 17:58   #1
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию not all arguments converted during string formatting

Есть вот такой код. Забираются данные из Oracle и кладутся в PG, на этом моменте и возникает ошибка
Код:
                records_list_template = ', '.join(['%s'] * len(col_names_pg))
                insert_query = 'INSERT INTO ' + tpg_table + ' (' + ", ".join(col_names_pg) + ')' + ' VALUES ({})'
                insert_query = insert_query + ' ON CONFLICT ("ID") DO UPDATE SET' + ' (' + ", ".join(col_names_pg) + ') =' + ' (' + ", ".join(excluded_col_names) + ');'
                insert_query = insert_query.format(records_list_template)
                cursor_pg.execute(insert_query, oracle_data)
В итоге запрос выглядит как-то так...

Код:
INSERT INTO table ("ID", "Val") VALUES (%s, %s) ON CONFLICT ("ID") DO UPDATE SET ("ID", "Val") = (EXCLUDED."ID",EXCLUDED."Val" );
Данные - список кортежей:
Код:
[(1,'A'), (2,'B'),(3,'C'),(4,'D')]
Код:
TypeError: not all arguments converted during string formatting
не могу понять в чем проблема... такая конструкция должна работать

Последний раз редактировалось unbanned; 21.12.2021 в 18:04.
unbanned вне форума Ответить с цитированием
Старый 22.12.2021, 06:45   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Не нашел в документации, что можно таким образом выполнить несколько запросов. А если так?
Код:
for data in oracle_data:
    cursor_pg.execute(insert_query, data)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TypeError: __init__() takes 3 positional arguments but 4 were given raulIQ Python 1 13.10.2019 19:38
Keras, cifar10, появляется ощибка: TypeError: only integer scalar arrays can be converted to a scalar index Артур12 Python 1 17.02.2019 23:18
Что такое Formatting Specifications Eustacce C# (си шарп) 1 09.10.2014 12:26
E2250 There is no overloaded version of 'Get' that can be called with these arguments demon-sheff Работа с сетью в Delphi 6 20.05.2013 09:12
too few arguments to .Как правильно исправить ? lisica198808 Помощь студентам 1 17.03.2013 03:32