Я создал временную таблицу с sqlalchemy (с базовой базой данных postgres), которая будет объединена с таблицей базы данных. Однако в некоторых случаях, когда значение пусто ''
, postgres выдает ошибку:
failed to find conversion function from unknown to text
SqlAlchemy собирает все в следующем контексте
[SQL: 'WITH temp_table AS \n(SELECT %(param_1)s AS id, %(param_2)s AS email, %(param_3)s AS phone)\n SELECT campaigns_contact.id, campaigns_contact.email, campaigns_contact.phone \nFROM campaigns_contact JOIN temp_table ON temp_table.id = campaigns_contact.id AND temp_table.email = campaigns_contact.email AND temp_table.phone = campaigns_contact.phone'] [parameters: {'param_1': 83, 'param_2': '', 'param_3': '+1234567890'}]
Я собираю временную таблицу следующим образом
stmts = []
for row in import_data:
row_values = [literal(row[value]).label(value) for value in values]
stmts.append(select(row_values))
subquery = union_all(*stmts)
subquery = subquery.cte(name="temp_table")
Кажется, проблема здесь в части
...%(param_2)s AS email...
, который после замены param_2
приводит к
...'' AS email...
, что приведет к ошибке, указанной выше.
Один из способов решить эту проблему - выполнить приведение
...''::text AS email...
Однако я не знаю, как выполнить ::text
приведение с помощью sqlalchemy!?