]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- hyperlink all the column operators listed in the ORM tutorial common filter operato...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 May 2014 13:54:20 +0000 (09:54 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 May 2014 13:56:14 +0000 (09:56 -0400)
- add language to MATCH explicitly stating this operator varies by backend and is not available
on SQLite, as the tutorial defaults to SQLite to start with, fix #3059
- on the actual match() documentation fix this up to be more accurate, list some example renderings
for different backends.  again mention SQLite not supported

doc/build/orm/tutorial.rst
lib/sqlalchemy/sql/operators.py

index 9dd27c322df11f601b3abfc4fff6f7dccc2ed679..dea1a114b6825a9d6ea7b8554386b70951455851 100644 (file)
@@ -762,19 +762,19 @@ Common Filter Operators
 
 Here's a rundown of some of the most common operators used in :func:`~sqlalchemy.orm.query.Query.filter`:
 
-* equals::
+* :meth:`equals <.ColumnOperators.__eq__>`::
 
     query.filter(User.name == 'ed')
 
-* not equals::
+* :meth:`not equals <.ColumnOperators.__ne__>`::
 
     query.filter(User.name != 'ed')
 
-* LIKE::
+* :meth:`LIKE <.ColumnOperators.like>`::
 
     query.filter(User.name.like('%ed%'))
 
-* IN::
+* :meth:`IN <.ColumnOperators.in_>`::
 
     query.filter(User.name.in_(['ed', 'wendy', 'jack']))
 
@@ -782,25 +782,25 @@ Here's a rundown of some of the most common operators used in :func:`~sqlalchemy
 
     query.filter(User.name.in_(session.query(User.name).filter(User.name.like('%ed%'))))
 
-* NOT IN::
+* :meth:`NOT IN <.ColumnOperators.notin_>`::
 
     query.filter(~User.name.in_(['ed', 'wendy', 'jack']))
 
-* IS NULL::
+* :meth:`IS NULL <.ColumnOperators.is_>`::
 
     filter(User.name == None)
 
     # alternatively, if pep8/linters are a concern
     query.filter(User.name.is_(None))
 
-* IS NOT NULL::
+* :meth:`IS NOT NULL <.ColumnOperators.isnot>`::
 
     filter(User.name != None)
 
     # alternatively, if pep8/linters are a concern
     query.filter(User.name.isnot(None))
 
-* AND::
+* :func:`AND <.sql.expression.and_>`::
 
     from sqlalchemy import and_
     filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))
@@ -808,16 +808,20 @@ Here's a rundown of some of the most common operators used in :func:`~sqlalchemy
     # or call filter()/filter_by() multiple times
     filter(User.name == 'ed').filter(User.fullname == 'Ed Jones')
 
-* OR::
+* :func:`OR <.sql.expression.or_>`::
 
     from sqlalchemy import or_
     filter(or_(User.name == 'ed', User.name == 'wendy'))
 
-* match::
+* :meth:`MATCH <.ColumnOperators.match>`::
 
     query.filter(User.name.match('wendy'))
 
- The contents of the match parameter are database backend specific.
+ .. note::
+
+    :meth:`~.ColumnOperators.match` uses a database-specific ``MATCH``
+    or ``CONTAINS`` function; its behavior will vary by backend and is not
+    available on some backends such as SQLite.
 
 Returning Lists and Scalars
 ---------------------------
index 16a8c16e0cd6047bfd0f86d47fb708a11924f933..e043c2a7012894d77d896a708902a5d525df8891 100644 (file)
@@ -503,11 +503,17 @@ class ColumnOperators(Operators):
         return self.operate(contains_op, other, **kwargs)
 
     def match(self, other, **kwargs):
-        """Implements the 'match' operator.
+        """Implements a database-specific 'match' operator.
 
-        In a column context, this produces a MATCH clause, i.e.
-        ``MATCH '<other>'``.  The allowed contents of ``other``
-        are database backend specific.
+        :meth:`~.ColumnOperators.match` attempts to resolve to
+        a MATCH-like function or operator provided by the backend.
+        Examples include:
+
+        * Postgresql - renders ``x @@ to_tsquery(y)``
+        * MySQL - renders ``MATCH (x) AGAINST (y IN BOOLEAN MODE)``
+        * Oracle - renders ``CONTAINS(x, y)``
+        * other backends may provide special implementations;
+          some backends such as SQLite have no support.
 
         """
         return self.operate(match_op, other, **kwargs)