expression.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. # sql/expression.py
  2. # Copyright (C) 2005-2017 the SQLAlchemy authors and contributors
  3. # <see AUTHORS file>
  4. #
  5. # This module is part of SQLAlchemy and is released under
  6. # the MIT License: http://www.opensource.org/licenses/mit-license.php
  7. """Defines the public namespace for SQL expression constructs.
  8. Prior to version 0.9, this module contained all of "elements", "dml",
  9. "default_comparator" and "selectable". The module was broken up
  10. and most "factory" functions were moved to be grouped with their associated
  11. class.
  12. """
  13. __all__ = [
  14. 'Alias', 'any_', 'all_', 'ClauseElement', 'ColumnCollection', 'ColumnElement',
  15. 'CompoundSelect', 'Delete', 'FromClause', 'Insert', 'Join', 'Lateral',
  16. 'Select',
  17. 'Selectable', 'TableClause', 'Update', 'alias', 'and_', 'asc', 'between',
  18. 'bindparam', 'case', 'cast', 'column', 'delete', 'desc', 'distinct',
  19. 'except_', 'except_all', 'exists', 'extract', 'func', 'modifier',
  20. 'collate', 'insert', 'intersect', 'intersect_all', 'join', 'label',
  21. 'lateral', 'literal', 'literal_column', 'not_', 'null', 'nullsfirst',
  22. 'nullslast',
  23. 'or_', 'outparam', 'outerjoin', 'over', 'select', 'subquery',
  24. 'table', 'text',
  25. 'tuple_', 'type_coerce', 'union', 'union_all', 'update', 'within_group',
  26. 'TableSample', 'tablesample']
  27. from .visitors import Visitable
  28. from .functions import func, modifier, FunctionElement, Function
  29. from ..util.langhelpers import public_factory
  30. from .elements import ClauseElement, ColumnElement,\
  31. BindParameter, CollectionAggregate, UnaryExpression, BooleanClauseList, \
  32. Label, Cast, Case, ColumnClause, TextClause, Over, Null, \
  33. True_, False_, BinaryExpression, Tuple, TypeClause, Extract, \
  34. Grouping, WithinGroup, not_, \
  35. collate, literal_column, between,\
  36. literal, outparam, TypeCoerce, ClauseList, FunctionFilter
  37. from .elements import SavepointClause, RollbackToSavepointClause, \
  38. ReleaseSavepointClause
  39. from .base import ColumnCollection, Generative, Executable, \
  40. PARSE_AUTOCOMMIT
  41. from .selectable import Alias, Join, Select, Selectable, TableClause, \
  42. CompoundSelect, CTE, FromClause, FromGrouping, Lateral, SelectBase, \
  43. alias, GenerativeSelect, subquery, HasCTE, HasPrefixes, HasSuffixes, \
  44. lateral, Exists, ScalarSelect, TextAsFrom, TableSample, tablesample
  45. from .dml import Insert, Update, Delete, UpdateBase, ValuesBase
  46. # factory functions - these pull class-bound constructors and classmethods
  47. # from SQL elements and selectables into public functions. This allows
  48. # the functions to be available in the sqlalchemy.sql.* namespace and
  49. # to be auto-cross-documenting from the function to the class itself.
  50. all_ = public_factory(CollectionAggregate._create_all, ".expression.all_")
  51. any_ = public_factory(CollectionAggregate._create_any, ".expression.any_")
  52. and_ = public_factory(BooleanClauseList.and_, ".expression.and_")
  53. or_ = public_factory(BooleanClauseList.or_, ".expression.or_")
  54. bindparam = public_factory(BindParameter, ".expression.bindparam")
  55. select = public_factory(Select, ".expression.select")
  56. text = public_factory(TextClause._create_text, ".expression.text")
  57. table = public_factory(TableClause, ".expression.table")
  58. column = public_factory(ColumnClause, ".expression.column")
  59. over = public_factory(Over, ".expression.over")
  60. within_group = public_factory(WithinGroup, ".expression.within_group")
  61. label = public_factory(Label, ".expression.label")
  62. case = public_factory(Case, ".expression.case")
  63. cast = public_factory(Cast, ".expression.cast")
  64. extract = public_factory(Extract, ".expression.extract")
  65. tuple_ = public_factory(Tuple, ".expression.tuple_")
  66. except_ = public_factory(CompoundSelect._create_except, ".expression.except_")
  67. except_all = public_factory(
  68. CompoundSelect._create_except_all, ".expression.except_all")
  69. intersect = public_factory(
  70. CompoundSelect._create_intersect, ".expression.intersect")
  71. intersect_all = public_factory(
  72. CompoundSelect._create_intersect_all, ".expression.intersect_all")
  73. union = public_factory(CompoundSelect._create_union, ".expression.union")
  74. union_all = public_factory(
  75. CompoundSelect._create_union_all, ".expression.union_all")
  76. exists = public_factory(Exists, ".expression.exists")
  77. nullsfirst = public_factory(
  78. UnaryExpression._create_nullsfirst, ".expression.nullsfirst")
  79. nullslast = public_factory(
  80. UnaryExpression._create_nullslast, ".expression.nullslast")
  81. asc = public_factory(UnaryExpression._create_asc, ".expression.asc")
  82. desc = public_factory(UnaryExpression._create_desc, ".expression.desc")
  83. distinct = public_factory(
  84. UnaryExpression._create_distinct, ".expression.distinct")
  85. type_coerce = public_factory(TypeCoerce, ".expression.type_coerce")
  86. true = public_factory(True_._instance, ".expression.true")
  87. false = public_factory(False_._instance, ".expression.false")
  88. null = public_factory(Null._instance, ".expression.null")
  89. join = public_factory(Join._create_join, ".expression.join")
  90. outerjoin = public_factory(Join._create_outerjoin, ".expression.outerjoin")
  91. insert = public_factory(Insert, ".expression.insert")
  92. update = public_factory(Update, ".expression.update")
  93. delete = public_factory(Delete, ".expression.delete")
  94. funcfilter = public_factory(
  95. FunctionFilter, ".expression.funcfilter")
  96. # internal functions still being called from tests and the ORM,
  97. # these might be better off in some other namespace
  98. from .base import _from_objects
  99. from .elements import _literal_as_text, _clause_element_as_expr,\
  100. _is_column, _labeled, _only_column_elements, _string_or_unprintable, \
  101. _truncated_label, _clone, _cloned_difference, _cloned_intersection,\
  102. _column_as_key, _literal_as_binds, _select_iterables, \
  103. _corresponding_column_or_error, _literal_as_label_reference, \
  104. _expression_literal_as_text
  105. from .selectable import _interpret_as_from
  106. # old names for compatibility
  107. _Executable = Executable
  108. _BindParamClause = BindParameter
  109. _Label = Label
  110. _SelectBase = SelectBase
  111. _BinaryExpression = BinaryExpression
  112. _Cast = Cast
  113. _Null = Null
  114. _False = False_
  115. _True = True_
  116. _TextClause = TextClause
  117. _UnaryExpression = UnaryExpression
  118. _Case = Case
  119. _Tuple = Tuple
  120. _Over = Over
  121. _Generative = Generative
  122. _TypeClause = TypeClause
  123. _Extract = Extract
  124. _Exists = Exists
  125. _Grouping = Grouping
  126. _FromGrouping = FromGrouping
  127. _ScalarSelect = ScalarSelect