para a receita "somente tags únicas" eu costumo usar a receita de objeto exclusivo, ou alguma variante dela:http://www.sqlalchemy.org/trac/wiki/UsageRecipes/UniqueObject .
Isso naturalmente requer um SELECT em uma linha específica para saber se ela existe primeiro. A técnica "upsert", usando comandos específicos do banco de dados para INSERT ou UPDATE uma linha com base em uma determinação do lado do banco de dados, não é suportada diretamente pelo ORM no momento. Você está no Postgresql de qualquer maneira, que na verdade não suporta nenhum recurso "upsert" nativo, exceto um sistema muito estranho usando expressões de tabela comuns.