1# sql/expression.py 2# Copyright (C) 2005-2021 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 8"""Defines the public namespace for SQL expression constructs. 9 10Prior to version 0.9, this module contained all of "elements", "dml", 11"default_comparator" and "selectable". The module was broken up 12and most "factory" functions were moved to be grouped with their associated 13class. 14 15""" 16 17__all__ = [ 18 "Alias", 19 "any_", 20 "all_", 21 "ClauseElement", 22 "ColumnCollection", 23 "ColumnElement", 24 "CompoundSelect", 25 "Delete", 26 "FromClause", 27 "Insert", 28 "Join", 29 "Lateral", 30 "Select", 31 "Selectable", 32 "TableClause", 33 "Update", 34 "alias", 35 "and_", 36 "asc", 37 "between", 38 "bindparam", 39 "case", 40 "cast", 41 "column", 42 "cte", 43 "delete", 44 "desc", 45 "distinct", 46 "except_", 47 "except_all", 48 "exists", 49 "extract", 50 "func", 51 "modifier", 52 "collate", 53 "insert", 54 "intersect", 55 "intersect_all", 56 "join", 57 "label", 58 "lateral", 59 "literal", 60 "literal_column", 61 "not_", 62 "null", 63 "nullsfirst", 64 "nullslast", 65 "or_", 66 "outparam", 67 "outerjoin", 68 "over", 69 "select", 70 "subquery", 71 "table", 72 "text", 73 "tuple_", 74 "type_coerce", 75 "quoted_name", 76 "union", 77 "union_all", 78 "update", 79 "within_group", 80 "TableSample", 81 "tablesample", 82] 83 84 85from .base import _from_objects # noqa 86from .base import ColumnCollection # noqa 87from .base import Executable # noqa 88from .base import Generative # noqa 89from .base import PARSE_AUTOCOMMIT # noqa 90from .dml import Delete # noqa 91from .dml import Insert # noqa 92from .dml import Update # noqa 93from .dml import UpdateBase # noqa 94from .dml import ValuesBase # noqa 95from .elements import _clause_element_as_expr # noqa 96from .elements import _clone # noqa 97from .elements import _cloned_difference # noqa 98from .elements import _cloned_intersection # noqa 99from .elements import _column_as_key # noqa 100from .elements import _corresponding_column_or_error # noqa 101from .elements import _expression_literal_as_text # noqa 102from .elements import _is_column # noqa 103from .elements import _labeled # noqa 104from .elements import _literal_as_binds # noqa 105from .elements import _literal_as_column # noqa 106from .elements import _literal_as_label_reference # noqa 107from .elements import _literal_as_text # noqa 108from .elements import _only_column_elements # noqa 109from .elements import _select_iterables # noqa 110from .elements import _string_or_unprintable # noqa 111from .elements import _truncated_label # noqa 112from .elements import between # noqa 113from .elements import BinaryExpression # noqa 114from .elements import BindParameter # noqa 115from .elements import BooleanClauseList # noqa 116from .elements import Case # noqa 117from .elements import Cast # noqa 118from .elements import ClauseElement # noqa 119from .elements import ClauseList # noqa 120from .elements import collate # noqa 121from .elements import CollectionAggregate # noqa 122from .elements import ColumnClause # noqa 123from .elements import ColumnElement # noqa 124from .elements import Extract # noqa 125from .elements import False_ # noqa 126from .elements import FunctionFilter # noqa 127from .elements import Grouping # noqa 128from .elements import Label # noqa 129from .elements import literal # noqa 130from .elements import literal_column # noqa 131from .elements import not_ # noqa 132from .elements import Null # noqa 133from .elements import outparam # noqa 134from .elements import Over # noqa 135from .elements import quoted_name # noqa 136from .elements import ReleaseSavepointClause # noqa 137from .elements import RollbackToSavepointClause # noqa 138from .elements import SavepointClause # noqa 139from .elements import TextClause # noqa 140from .elements import True_ # noqa 141from .elements import Tuple # noqa 142from .elements import TypeClause # noqa 143from .elements import TypeCoerce # noqa 144from .elements import UnaryExpression # noqa 145from .elements import WithinGroup # noqa 146from .functions import func # noqa 147from .functions import Function # noqa 148from .functions import FunctionElement # noqa 149from .functions import modifier # noqa 150from .selectable import _interpret_as_from # noqa 151from .selectable import Alias # noqa 152from .selectable import CompoundSelect # noqa 153from .selectable import CTE # noqa 154from .selectable import Exists # noqa 155from .selectable import FromClause # noqa 156from .selectable import FromGrouping # noqa 157from .selectable import GenerativeSelect # noqa 158from .selectable import HasCTE # noqa 159from .selectable import HasPrefixes # noqa 160from .selectable import HasSuffixes # noqa 161from .selectable import Join # noqa 162from .selectable import Lateral # noqa 163from .selectable import ScalarSelect # noqa 164from .selectable import Select # noqa 165from .selectable import Selectable # noqa 166from .selectable import SelectBase # noqa 167from .selectable import subquery # noqa 168from .selectable import TableClause # noqa 169from .selectable import TableSample # noqa 170from .selectable import TextAsFrom # noqa 171from .visitors import Visitable # noqa 172from ..util.langhelpers import public_factory # noqa 173 174 175# factory functions - these pull class-bound constructors and classmethods 176# from SQL elements and selectables into public functions. This allows 177# the functions to be available in the sqlalchemy.sql.* namespace and 178# to be auto-cross-documenting from the function to the class itself. 179 180all_ = public_factory(CollectionAggregate._create_all, ".sql.expression.all_") 181any_ = public_factory(CollectionAggregate._create_any, ".sql.expression.any_") 182and_ = public_factory(BooleanClauseList.and_, ".sql.expression.and_") 183alias = public_factory(Alias._factory, ".sql.expression.alias") 184tablesample = public_factory( 185 TableSample._factory, ".sql.expression.tablesample" 186) 187lateral = public_factory(Lateral._factory, ".sql.expression.lateral") 188or_ = public_factory(BooleanClauseList.or_, ".sql.expression.or_") 189bindparam = public_factory(BindParameter, ".sql.expression.bindparam") 190select = public_factory(Select, ".sql.expression.select") 191text = public_factory(TextClause._create_text, ".sql.expression.text") 192table = public_factory(TableClause, ".sql.expression.table") 193column = public_factory(ColumnClause, ".sql.expression.column") 194over = public_factory(Over, ".sql.expression.over") 195within_group = public_factory(WithinGroup, ".sql.expression.within_group") 196label = public_factory(Label, ".sql.expression.label") 197case = public_factory(Case, ".sql.expression.case") 198cast = public_factory(Cast, ".sql.expression.cast") 199cte = public_factory(CTE._factory, ".sql.expression.cte") 200extract = public_factory(Extract, ".sql.expression.extract") 201tuple_ = public_factory(Tuple, ".sql.expression.tuple_") 202except_ = public_factory( 203 CompoundSelect._create_except, ".sql.expression.except_" 204) 205except_all = public_factory( 206 CompoundSelect._create_except_all, ".sql.expression.except_all" 207) 208intersect = public_factory( 209 CompoundSelect._create_intersect, ".sql.expression.intersect" 210) 211intersect_all = public_factory( 212 CompoundSelect._create_intersect_all, ".sql.expression.intersect_all" 213) 214union = public_factory(CompoundSelect._create_union, ".sql.expression.union") 215union_all = public_factory( 216 CompoundSelect._create_union_all, ".sql.expression.union_all" 217) 218exists = public_factory(Exists, ".sql.expression.exists") 219nullsfirst = public_factory( 220 UnaryExpression._create_nullsfirst, ".sql.expression.nullsfirst" 221) 222nullslast = public_factory( 223 UnaryExpression._create_nullslast, ".sql.expression.nullslast" 224) 225asc = public_factory(UnaryExpression._create_asc, ".sql.expression.asc") 226desc = public_factory(UnaryExpression._create_desc, ".sql.expression.desc") 227distinct = public_factory( 228 UnaryExpression._create_distinct, ".sql.expression.distinct" 229) 230type_coerce = public_factory(TypeCoerce, ".sql.expression.type_coerce") 231true = public_factory(True_._instance, ".sql.expression.true") 232false = public_factory(False_._instance, ".sql.expression.false") 233null = public_factory(Null._instance, ".sql.expression.null") 234join = public_factory(Join._create_join, ".sql.expression.join") 235outerjoin = public_factory(Join._create_outerjoin, ".sql.expression.outerjoin") 236insert = public_factory(Insert, ".sql.expression.insert") 237update = public_factory(Update, ".sql.expression.update") 238delete = public_factory(Delete, ".sql.expression.delete") 239funcfilter = public_factory(FunctionFilter, ".sql.expression.funcfilter") 240 241 242# internal functions still being called from tests and the ORM, 243# these might be better off in some other namespace 244 245 246# old names for compatibility 247_Executable = Executable 248_BindParamClause = BindParameter 249_Label = Label 250_SelectBase = SelectBase 251_BinaryExpression = BinaryExpression 252_Cast = Cast 253_Null = Null 254_False = False_ 255_True = True_ 256_TextClause = TextClause 257_UnaryExpression = UnaryExpression 258_Case = Case 259_Tuple = Tuple 260_Over = Over 261_Generative = Generative 262_TypeClause = TypeClause 263_Extract = Extract 264_Exists = Exists 265_Grouping = Grouping 266_FromGrouping = FromGrouping 267_ScalarSelect = ScalarSelect 268