This extension provides support of ZomboDb query language for python sqlalchemy ORM
ZomboDb project: https://github.com/zombodb/zombodb
Phrase query:
from sa_zdb import zdb_query, ZdbPhrase
pg_session.query(Post.text)\
.filter(zdb_query(Post.text == ZdbPhrase('hey joe')))
SELECT post.text AS post_text
FROM post
WHERE zdb('post', ctid) ==> 'text:"hey joe"'
Boolean query:
pg_session.query(Post.text)\
.filter(zdb_query(or_(Post.text == 'foo', and_(Post.text == 'bar', Post.text == 'fuzz'))))
SELECT post.text AS post_text
FROM post
WHERE zdb('post', ctid) ==> '(text:foo or (text:bar and text:fuzz))'
more_like_this:
pg_session.query(Post.text)\
.filter(zdb_query(Post.text.match('foo')))
SELECT post.text AS post_text
FROM post
WHERE zdb('post', ctid) ==> 'text:@foo'
Comparison operations:
pg_session.query(Post.text)\
.filter(zdb_query(Post.comments > 1))
SELECT post.text AS post_text
FROM post
WHERE zdb('post', ctid) ==> 'comments > 1'
Raw query:
pg_session.query(Post.text)\
.filter(zdb_query(Post, 'text:(sports,box) or long_description:(wooden w/5 away) and comments < 10'))
SELECT post.text AS post_text
FROM post
WHERE zdb('post', ctid) ==> 'text:(sports,box) or long_description:(wooden w/5 away) and comments < 10'
Also, regexp supports through like operation