Как запустить оператор Merge SQL в петле Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как запустить оператор Merge SQL в петле Python?

Сообщение Anonymous »

У меня есть код SQL: < /p>
CREATE TABLE TABLE_1 AS
(
SELECT ACCOUNT, 0 AS REDEEMER
FROM ACCOUNTS
)
WITH DATA
IN MY_SCHEMA
COMPRESS YES
;

MERGE INTO TABLE_1 A
USING
(
SELECT ACCOUNT
FROM REDEEMERS
WHERE CATEGORY = 'x'
) B
ON A.ACCOUNT = B.ACCOUNT
WHEN MATCHED THEN UPDATE
SET A.REDEEMER = 1
;
< /code>
Допустим, Table_1 выглядит так, когда создается, с Sleeemer, установленным на 0 для всех строк: < /p>
account | redeemer
------------------
a | 0
b | 0
c | 0
< /code>
Если учетные записи A и C имеют выкупленную категорию X, слияние должно сделать таблицу_1 выглядеть следующим образом: < /p>
account | redeemer
------------------
a | 1
b | 0
c | 1
< /code>
Это работает так, как задумано. Теперь я хочу сделать это для нескольких категорий по очереди, внедряя SQL в цикл в Python, используя SQLalchemy, например: < /p>
connection.execute(
f'''
CREATE TABLE TABLE_1 AS
(
SELECT ACCOUNT, 0 AS REDEEMER
FROM ACCOUNTS
)
WITH DATA
IN MY_SCHEMA
COMPRESS YES
;''')

categories = [
"x",
"y",
"z"
]

for i in categories:
#Set redeemer column to 1 for redeemers of the current category
connection.execute(
f'''
MERGE INTO TABLE_1 A
USING
(
SELECT ACCOUNT
FROM REDEEMERS
WHERE CATEGORY = '{i}'
) B
ON A.ACCOUNT = B.ACCOUNT
WHEN MATCHED THEN UPDATE
SET A.REDEEMER = 1
;''')

#Code to do some stuff with the data in table_1 goes here

#Set redeemer column back to 0 in preparation for the next loop
connection.execute(
f'''
UPDATE TABLE_1
SET REDEEMER = 0
;''')
< /code>
Однако это не достигает желаемого результата. Там нет сообщения об ошибке, но столбец Искупителя, похоже, не обновляется слиянием. Я добавил оператор SUM сразу после слияния, которое подтверждает, что REEEMER все еще установлен на 0 для всех рядов.
Кто -нибудь знает, почему этот код не работает при прохождении через Python? < /p>

Подробнее здесь: https://stackoverflow.com/questions/793 ... ython-loop
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как запустить оператор Merge SQL в петле Python?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как запустить оператор Merge SQL в петле Python?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Оператор MERGE конфликтовал с ограничением FOREIGN KEY.
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Использовать параметр с табличным значением в инструкции Merge sql
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Использовать параметр с табличным значением в инструкции Merge sql
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»