inmemory sqlite? там эти конструкции я полагаю не сработают?
сама конструкция в
SQLite имеется, и sqlalchemy.dialects.sqlite
поддерживается. Насколько ее поведение идентично postgresql - не подскажу, но для простых случаев скорее всего - да.
3) пропадает сразу плюс алхимии в легкой миграции кода на другие бд, скажем mysql (проблема схожа с пунктом 1)
В общем поясните пожалуйста что я не так делаю?
Вы хотите одновременно использовать и нестандартный SQL синтаксис и сохранять совместимость между разными реализациями.
Тут либо
расширять алхимию под ваши задачи, адресно реализуя для общего случая и отдельных диалектов, либо задуматься над тем, а действительно ли эти upsert'ы настолько массовы, что оптимизация под ON CONFLICT действительно принесет существенный выигрыш по сравнению с банальным предварительным SELECT и выбором INSERT или UPDATE на стороне питона.