En PostgreSQL con JSONB puedes usar la comprobación de contención:
dict = {"telephones": [{"telephone": "54435345"}]}
user = cls.query.filter(your_table.contact_info.contains(dict)).first()
En MySQL
podría ser posible usar func
.json_contains
:
(debe adaptarse y probarlo, sin duda al estilo de MySQL, pero probablemente también al de PostgreSQL)