с учетом следующего определения таблицы
meta = MetaData()
tgd = Table('T_GROUP_DAT', meta,
Column('C_ID'),
Column('CLASS_CODE'))
Я создаю оператор выбора, используя sqlalchemy.sql.functions.concat
с 3 операторами
tgd_q1 = select([functions.concat(tgd.c.C_ID, '-', tgd.c.CLASS_CODE)])
, используя
tgd_q1.compile(dialect=OracleDialect(), compile_kwargs={"literal_binds": True}))
запрос
SELECT concat("T_GROUP_DAT"."C_ID", "T_GROUP_DAT"."CLASS_CODE") AS concat_1
FROM "T_GROUP_DAT"
сформирован. Однако, когда я запускаю это, возникает исключение ORA-00909: invalid number of arguments
. Это потому, что CONCAT (https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions026.htm) допускает только 2 аргумента.
В настоящее время мой обходной путь - использовать concat внутри concat, что работает
tgd_q1 = select([functions.concat(functions.concat(tgd.c.C_ID,'-'),tgd.c.CLASS_CODE)])
Однако это делает результирующий запрос sql гораздо менее читабельным. Есть ли способ создать запрос с использованием |
oparator или создать более читабельный запрос sql для этого случая с использованием sqlalchemy