sql sqlalchemy python-elixir

Elixir/SQLAlchemy equivalente a la declaración SQL "LIKE"?



python-elixir (3)

Añadiendo a la respuesta anterior, quien busque una solución, también puede probar el operador ''combinar'' en lugar de ''me gusta''. No quiero ser parcial, pero funcionó perfectamente para mí en Postgresql.

Note.query.filter(Note.message.match("%somestr%")).all()

Hereda las funciones de la base de datos como CONTAINS y MATCH . Sin embargo, no está disponible en SQLite.

Para obtener más información, vaya a Operadores comunes de filtros

Estoy usando el esquema de tipo MySQLicious descrito aquí para un sistema de etiquetado simple. He leído algunas implementaciones alternativas del esquema de etiquetado en 4 hilos SO diferentes, y esto se adapta mejor a mis necesidades.

Una colección de entradas tiene las etiquetas "manzana banana naranja" y "fresa plátano limón", y estoy tratando de encontrar la declaración equivalente Elixir / SQLAlchemy a

SELECT * FROM table WHERE tags LIKE "%banana%";

No he podido encontrar ninguna manera de estructurar un comando Class.query.filter / filter_by () y no puedo ver un método similar en la documentación de ninguno de los módulos. ¿Hay una manera simple de hacer esto? O debería simplemente usar SQL sin formato.

Pregunta adicional: una desventaja del esquema de MySQLicious es el caso en el que deseo buscar "% apple%" pero me devuelven "piña". ¿Hay una forma de alto nivel para lidiar con este caso de prueba? ¿O debería simplemente incluir un espacio líder en cada consulta?

nB: Para los que les importa, esta es mi primera experiencia con las bases de datos, por lo que puedo estar pasando por alto las principales ventajas del esquema mencionado en otros hilos. Mi aplicación es para registrar una oración o dos sobre una tarea completada, con columnas [TaskID, Tags, Notes, StartTime, StopTime, TimeTaken], un poco como un diario simple. En su mayoría con fines tutoriales. Deseo poder buscar por etiquetas individuales para averiguar aproximadamente cuánto tiempo gasto en una tarea determinada.


Cada columna tiene el método .like, que se puede usar como cláusula de filtro.

>>> Note.query.filter(Note.message.like("%somestr%")).all() []


prueba este código

output = dbsession.query(<model_class>).filter(<model_calss>.email.ilike(''%'' + < email > + ''%''))