SQLAlchemy 2.0.47__cp313-cp313t-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. sqlalchemy/__init__.py +283 -0
  2. sqlalchemy/connectors/__init__.py +18 -0
  3. sqlalchemy/connectors/aioodbc.py +184 -0
  4. sqlalchemy/connectors/asyncio.py +429 -0
  5. sqlalchemy/connectors/pyodbc.py +250 -0
  6. sqlalchemy/cyextension/__init__.py +6 -0
  7. sqlalchemy/cyextension/collections.cp313t-win_amd64.pyd +0 -0
  8. sqlalchemy/cyextension/collections.pyx +409 -0
  9. sqlalchemy/cyextension/immutabledict.cp313t-win_amd64.pyd +0 -0
  10. sqlalchemy/cyextension/immutabledict.pxd +8 -0
  11. sqlalchemy/cyextension/immutabledict.pyx +133 -0
  12. sqlalchemy/cyextension/processors.cp313t-win_amd64.pyd +0 -0
  13. sqlalchemy/cyextension/processors.pyx +68 -0
  14. sqlalchemy/cyextension/resultproxy.cp313t-win_amd64.pyd +0 -0
  15. sqlalchemy/cyextension/resultproxy.pyx +102 -0
  16. sqlalchemy/cyextension/util.cp313t-win_amd64.pyd +0 -0
  17. sqlalchemy/cyextension/util.pyx +90 -0
  18. sqlalchemy/dialects/__init__.py +62 -0
  19. sqlalchemy/dialects/_typing.py +30 -0
  20. sqlalchemy/dialects/mssql/__init__.py +88 -0
  21. sqlalchemy/dialects/mssql/aioodbc.py +63 -0
  22. sqlalchemy/dialects/mssql/base.py +4093 -0
  23. sqlalchemy/dialects/mssql/information_schema.py +285 -0
  24. sqlalchemy/dialects/mssql/json.py +129 -0
  25. sqlalchemy/dialects/mssql/provision.py +185 -0
  26. sqlalchemy/dialects/mssql/pymssql.py +126 -0
  27. sqlalchemy/dialects/mssql/pyodbc.py +760 -0
  28. sqlalchemy/dialects/mysql/__init__.py +104 -0
  29. sqlalchemy/dialects/mysql/aiomysql.py +250 -0
  30. sqlalchemy/dialects/mysql/asyncmy.py +231 -0
  31. sqlalchemy/dialects/mysql/base.py +3949 -0
  32. sqlalchemy/dialects/mysql/cymysql.py +106 -0
  33. sqlalchemy/dialects/mysql/dml.py +225 -0
  34. sqlalchemy/dialects/mysql/enumerated.py +282 -0
  35. sqlalchemy/dialects/mysql/expression.py +146 -0
  36. sqlalchemy/dialects/mysql/json.py +91 -0
  37. sqlalchemy/dialects/mysql/mariadb.py +72 -0
  38. sqlalchemy/dialects/mysql/mariadbconnector.py +322 -0
  39. sqlalchemy/dialects/mysql/mysqlconnector.py +302 -0
  40. sqlalchemy/dialects/mysql/mysqldb.py +314 -0
  41. sqlalchemy/dialects/mysql/provision.py +153 -0
  42. sqlalchemy/dialects/mysql/pymysql.py +158 -0
  43. sqlalchemy/dialects/mysql/pyodbc.py +157 -0
  44. sqlalchemy/dialects/mysql/reflection.py +727 -0
  45. sqlalchemy/dialects/mysql/reserved_words.py +570 -0
  46. sqlalchemy/dialects/mysql/types.py +835 -0
  47. sqlalchemy/dialects/oracle/__init__.py +81 -0
  48. sqlalchemy/dialects/oracle/base.py +3802 -0
  49. sqlalchemy/dialects/oracle/cx_oracle.py +1555 -0
  50. sqlalchemy/dialects/oracle/dictionary.py +507 -0
  51. sqlalchemy/dialects/oracle/oracledb.py +941 -0
  52. sqlalchemy/dialects/oracle/provision.py +297 -0
  53. sqlalchemy/dialects/oracle/types.py +316 -0
  54. sqlalchemy/dialects/oracle/vector.py +365 -0
  55. sqlalchemy/dialects/postgresql/__init__.py +167 -0
  56. sqlalchemy/dialects/postgresql/_psycopg_common.py +189 -0
  57. sqlalchemy/dialects/postgresql/array.py +519 -0
  58. sqlalchemy/dialects/postgresql/asyncpg.py +1284 -0
  59. sqlalchemy/dialects/postgresql/base.py +5378 -0
  60. sqlalchemy/dialects/postgresql/dml.py +339 -0
  61. sqlalchemy/dialects/postgresql/ext.py +540 -0
  62. sqlalchemy/dialects/postgresql/hstore.py +406 -0
  63. sqlalchemy/dialects/postgresql/json.py +404 -0
  64. sqlalchemy/dialects/postgresql/named_types.py +524 -0
  65. sqlalchemy/dialects/postgresql/operators.py +129 -0
  66. sqlalchemy/dialects/postgresql/pg8000.py +669 -0
  67. sqlalchemy/dialects/postgresql/pg_catalog.py +326 -0
  68. sqlalchemy/dialects/postgresql/provision.py +183 -0
  69. sqlalchemy/dialects/postgresql/psycopg.py +862 -0
  70. sqlalchemy/dialects/postgresql/psycopg2.py +892 -0
  71. sqlalchemy/dialects/postgresql/psycopg2cffi.py +61 -0
  72. sqlalchemy/dialects/postgresql/ranges.py +1031 -0
  73. sqlalchemy/dialects/postgresql/types.py +313 -0
  74. sqlalchemy/dialects/sqlite/__init__.py +57 -0
  75. sqlalchemy/dialects/sqlite/aiosqlite.py +482 -0
  76. sqlalchemy/dialects/sqlite/base.py +3056 -0
  77. sqlalchemy/dialects/sqlite/dml.py +263 -0
  78. sqlalchemy/dialects/sqlite/json.py +92 -0
  79. sqlalchemy/dialects/sqlite/provision.py +229 -0
  80. sqlalchemy/dialects/sqlite/pysqlcipher.py +157 -0
  81. sqlalchemy/dialects/sqlite/pysqlite.py +756 -0
  82. sqlalchemy/dialects/type_migration_guidelines.txt +145 -0
  83. sqlalchemy/engine/__init__.py +62 -0
  84. sqlalchemy/engine/_py_processors.py +136 -0
  85. sqlalchemy/engine/_py_row.py +128 -0
  86. sqlalchemy/engine/_py_util.py +74 -0
  87. sqlalchemy/engine/base.py +3390 -0
  88. sqlalchemy/engine/characteristics.py +155 -0
  89. sqlalchemy/engine/create.py +893 -0
  90. sqlalchemy/engine/cursor.py +2298 -0
  91. sqlalchemy/engine/default.py +2394 -0
  92. sqlalchemy/engine/events.py +965 -0
  93. sqlalchemy/engine/interfaces.py +3471 -0
  94. sqlalchemy/engine/mock.py +134 -0
  95. sqlalchemy/engine/processors.py +61 -0
  96. sqlalchemy/engine/reflection.py +2102 -0
  97. sqlalchemy/engine/result.py +2399 -0
  98. sqlalchemy/engine/row.py +400 -0
  99. sqlalchemy/engine/strategies.py +16 -0
  100. sqlalchemy/engine/url.py +924 -0
  101. sqlalchemy/engine/util.py +167 -0
  102. sqlalchemy/event/__init__.py +26 -0
  103. sqlalchemy/event/api.py +220 -0
  104. sqlalchemy/event/attr.py +676 -0
  105. sqlalchemy/event/base.py +472 -0
  106. sqlalchemy/event/legacy.py +258 -0
  107. sqlalchemy/event/registry.py +390 -0
  108. sqlalchemy/events.py +17 -0
  109. sqlalchemy/exc.py +832 -0
  110. sqlalchemy/ext/__init__.py +11 -0
  111. sqlalchemy/ext/associationproxy.py +2027 -0
  112. sqlalchemy/ext/asyncio/__init__.py +25 -0
  113. sqlalchemy/ext/asyncio/base.py +281 -0
  114. sqlalchemy/ext/asyncio/engine.py +1471 -0
  115. sqlalchemy/ext/asyncio/exc.py +21 -0
  116. sqlalchemy/ext/asyncio/result.py +965 -0
  117. sqlalchemy/ext/asyncio/scoping.py +1599 -0
  118. sqlalchemy/ext/asyncio/session.py +1947 -0
  119. sqlalchemy/ext/automap.py +1701 -0
  120. sqlalchemy/ext/baked.py +570 -0
  121. sqlalchemy/ext/compiler.py +600 -0
  122. sqlalchemy/ext/declarative/__init__.py +65 -0
  123. sqlalchemy/ext/declarative/extensions.py +564 -0
  124. sqlalchemy/ext/horizontal_shard.py +478 -0
  125. sqlalchemy/ext/hybrid.py +1535 -0
  126. sqlalchemy/ext/indexable.py +364 -0
  127. sqlalchemy/ext/instrumentation.py +450 -0
  128. sqlalchemy/ext/mutable.py +1085 -0
  129. sqlalchemy/ext/mypy/__init__.py +6 -0
  130. sqlalchemy/ext/mypy/apply.py +324 -0
  131. sqlalchemy/ext/mypy/decl_class.py +515 -0
  132. sqlalchemy/ext/mypy/infer.py +590 -0
  133. sqlalchemy/ext/mypy/names.py +335 -0
  134. sqlalchemy/ext/mypy/plugin.py +303 -0
  135. sqlalchemy/ext/mypy/util.py +357 -0
  136. sqlalchemy/ext/orderinglist.py +439 -0
  137. sqlalchemy/ext/serializer.py +185 -0
  138. sqlalchemy/future/__init__.py +16 -0
  139. sqlalchemy/future/engine.py +15 -0
  140. sqlalchemy/inspection.py +174 -0
  141. sqlalchemy/log.py +288 -0
  142. sqlalchemy/orm/__init__.py +171 -0
  143. sqlalchemy/orm/_orm_constructors.py +2661 -0
  144. sqlalchemy/orm/_typing.py +179 -0
  145. sqlalchemy/orm/attributes.py +2845 -0
  146. sqlalchemy/orm/base.py +971 -0
  147. sqlalchemy/orm/bulk_persistence.py +2135 -0
  148. sqlalchemy/orm/clsregistry.py +571 -0
  149. sqlalchemy/orm/collections.py +1627 -0
  150. sqlalchemy/orm/context.py +3334 -0
  151. sqlalchemy/orm/decl_api.py +2004 -0
  152. sqlalchemy/orm/decl_base.py +2192 -0
  153. sqlalchemy/orm/dependency.py +1302 -0
  154. sqlalchemy/orm/descriptor_props.py +1092 -0
  155. sqlalchemy/orm/dynamic.py +300 -0
  156. sqlalchemy/orm/evaluator.py +379 -0
  157. sqlalchemy/orm/events.py +3252 -0
  158. sqlalchemy/orm/exc.py +237 -0
  159. sqlalchemy/orm/identity.py +302 -0
  160. sqlalchemy/orm/instrumentation.py +754 -0
  161. sqlalchemy/orm/interfaces.py +1496 -0
  162. sqlalchemy/orm/loading.py +1686 -0
  163. sqlalchemy/orm/mapped_collection.py +557 -0
  164. sqlalchemy/orm/mapper.py +4444 -0
  165. sqlalchemy/orm/path_registry.py +809 -0
  166. sqlalchemy/orm/persistence.py +1788 -0
  167. sqlalchemy/orm/properties.py +935 -0
  168. sqlalchemy/orm/query.py +3459 -0
  169. sqlalchemy/orm/relationships.py +3508 -0
  170. sqlalchemy/orm/scoping.py +2148 -0
  171. sqlalchemy/orm/session.py +5280 -0
  172. sqlalchemy/orm/state.py +1168 -0
  173. sqlalchemy/orm/state_changes.py +196 -0
  174. sqlalchemy/orm/strategies.py +3470 -0
  175. sqlalchemy/orm/strategy_options.py +2568 -0
  176. sqlalchemy/orm/sync.py +164 -0
  177. sqlalchemy/orm/unitofwork.py +796 -0
  178. sqlalchemy/orm/util.py +2403 -0
  179. sqlalchemy/orm/writeonly.py +674 -0
  180. sqlalchemy/pool/__init__.py +44 -0
  181. sqlalchemy/pool/base.py +1524 -0
  182. sqlalchemy/pool/events.py +375 -0
  183. sqlalchemy/pool/impl.py +588 -0
  184. sqlalchemy/py.typed +0 -0
  185. sqlalchemy/schema.py +69 -0
  186. sqlalchemy/sql/__init__.py +145 -0
  187. sqlalchemy/sql/_dml_constructors.py +132 -0
  188. sqlalchemy/sql/_elements_constructors.py +1872 -0
  189. sqlalchemy/sql/_orm_types.py +20 -0
  190. sqlalchemy/sql/_py_util.py +75 -0
  191. sqlalchemy/sql/_selectable_constructors.py +763 -0
  192. sqlalchemy/sql/_typing.py +482 -0
  193. sqlalchemy/sql/annotation.py +587 -0
  194. sqlalchemy/sql/base.py +2293 -0
  195. sqlalchemy/sql/cache_key.py +1057 -0
  196. sqlalchemy/sql/coercions.py +1404 -0
  197. sqlalchemy/sql/compiler.py +8081 -0
  198. sqlalchemy/sql/crud.py +1752 -0
  199. sqlalchemy/sql/ddl.py +1444 -0
  200. sqlalchemy/sql/default_comparator.py +551 -0
  201. sqlalchemy/sql/dml.py +1850 -0
  202. sqlalchemy/sql/elements.py +5589 -0
  203. sqlalchemy/sql/events.py +458 -0
  204. sqlalchemy/sql/expression.py +159 -0
  205. sqlalchemy/sql/functions.py +2158 -0
  206. sqlalchemy/sql/lambdas.py +1442 -0
  207. sqlalchemy/sql/naming.py +209 -0
  208. sqlalchemy/sql/operators.py +2623 -0
  209. sqlalchemy/sql/roles.py +323 -0
  210. sqlalchemy/sql/schema.py +6222 -0
  211. sqlalchemy/sql/selectable.py +7265 -0
  212. sqlalchemy/sql/sqltypes.py +3930 -0
  213. sqlalchemy/sql/traversals.py +1024 -0
  214. sqlalchemy/sql/type_api.py +2368 -0
  215. sqlalchemy/sql/util.py +1485 -0
  216. sqlalchemy/sql/visitors.py +1164 -0
  217. sqlalchemy/testing/__init__.py +96 -0
  218. sqlalchemy/testing/assertions.py +994 -0
  219. sqlalchemy/testing/assertsql.py +520 -0
  220. sqlalchemy/testing/asyncio.py +135 -0
  221. sqlalchemy/testing/config.py +434 -0
  222. sqlalchemy/testing/engines.py +483 -0
  223. sqlalchemy/testing/entities.py +117 -0
  224. sqlalchemy/testing/exclusions.py +476 -0
  225. sqlalchemy/testing/fixtures/__init__.py +28 -0
  226. sqlalchemy/testing/fixtures/base.py +384 -0
  227. sqlalchemy/testing/fixtures/mypy.py +332 -0
  228. sqlalchemy/testing/fixtures/orm.py +227 -0
  229. sqlalchemy/testing/fixtures/sql.py +482 -0
  230. sqlalchemy/testing/pickleable.py +155 -0
  231. sqlalchemy/testing/plugin/__init__.py +6 -0
  232. sqlalchemy/testing/plugin/bootstrap.py +51 -0
  233. sqlalchemy/testing/plugin/plugin_base.py +828 -0
  234. sqlalchemy/testing/plugin/pytestplugin.py +892 -0
  235. sqlalchemy/testing/profiling.py +329 -0
  236. sqlalchemy/testing/provision.py +603 -0
  237. sqlalchemy/testing/requirements.py +1945 -0
  238. sqlalchemy/testing/schema.py +198 -0
  239. sqlalchemy/testing/suite/__init__.py +19 -0
  240. sqlalchemy/testing/suite/test_cte.py +237 -0
  241. sqlalchemy/testing/suite/test_ddl.py +389 -0
  242. sqlalchemy/testing/suite/test_deprecations.py +153 -0
  243. sqlalchemy/testing/suite/test_dialect.py +776 -0
  244. sqlalchemy/testing/suite/test_insert.py +630 -0
  245. sqlalchemy/testing/suite/test_reflection.py +3557 -0
  246. sqlalchemy/testing/suite/test_results.py +504 -0
  247. sqlalchemy/testing/suite/test_rowcount.py +258 -0
  248. sqlalchemy/testing/suite/test_select.py +2010 -0
  249. sqlalchemy/testing/suite/test_sequence.py +317 -0
  250. sqlalchemy/testing/suite/test_types.py +2147 -0
  251. sqlalchemy/testing/suite/test_unicode_ddl.py +189 -0
  252. sqlalchemy/testing/suite/test_update_delete.py +139 -0
  253. sqlalchemy/testing/util.py +535 -0
  254. sqlalchemy/testing/warnings.py +52 -0
  255. sqlalchemy/types.py +74 -0
  256. sqlalchemy/util/__init__.py +162 -0
  257. sqlalchemy/util/_collections.py +712 -0
  258. sqlalchemy/util/_concurrency_py3k.py +288 -0
  259. sqlalchemy/util/_has_cy.py +40 -0
  260. sqlalchemy/util/_py_collections.py +541 -0
  261. sqlalchemy/util/compat.py +421 -0
  262. sqlalchemy/util/concurrency.py +110 -0
  263. sqlalchemy/util/deprecations.py +401 -0
  264. sqlalchemy/util/langhelpers.py +2203 -0
  265. sqlalchemy/util/preloaded.py +150 -0
  266. sqlalchemy/util/queue.py +322 -0
  267. sqlalchemy/util/tool_support.py +201 -0
  268. sqlalchemy/util/topological.py +120 -0
  269. sqlalchemy/util/typing.py +734 -0
  270. sqlalchemy-2.0.47.dist-info/METADATA +243 -0
  271. sqlalchemy-2.0.47.dist-info/RECORD +274 -0
  272. sqlalchemy-2.0.47.dist-info/WHEEL +5 -0
  273. sqlalchemy-2.0.47.dist-info/licenses/LICENSE +19 -0
  274. sqlalchemy-2.0.47.dist-info/top_level.txt +1 -0
@@ -0,0 +1,145 @@
1
+ # sql/__init__.py
2
+ # Copyright (C) 2005-2026 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: https://www.opensource.org/licenses/mit-license.php
7
+ from typing import Any
8
+ from typing import TYPE_CHECKING
9
+
10
+ from ._typing import ColumnExpressionArgument as ColumnExpressionArgument
11
+ from ._typing import NotNullable as NotNullable
12
+ from ._typing import Nullable as Nullable
13
+ from .base import Executable as Executable
14
+ from .compiler import COLLECT_CARTESIAN_PRODUCTS as COLLECT_CARTESIAN_PRODUCTS
15
+ from .compiler import FROM_LINTING as FROM_LINTING
16
+ from .compiler import NO_LINTING as NO_LINTING
17
+ from .compiler import WARN_LINTING as WARN_LINTING
18
+ from .ddl import BaseDDLElement as BaseDDLElement
19
+ from .ddl import DDL as DDL
20
+ from .ddl import DDLElement as DDLElement
21
+ from .ddl import ExecutableDDLElement as ExecutableDDLElement
22
+ from .expression import Alias as Alias
23
+ from .expression import alias as alias
24
+ from .expression import all_ as all_
25
+ from .expression import and_ as and_
26
+ from .expression import any_ as any_
27
+ from .expression import asc as asc
28
+ from .expression import between as between
29
+ from .expression import bindparam as bindparam
30
+ from .expression import case as case
31
+ from .expression import cast as cast
32
+ from .expression import ClauseElement as ClauseElement
33
+ from .expression import collate as collate
34
+ from .expression import column as column
35
+ from .expression import ColumnCollection as ColumnCollection
36
+ from .expression import ColumnElement as ColumnElement
37
+ from .expression import CompoundSelect as CompoundSelect
38
+ from .expression import cte as cte
39
+ from .expression import Delete as Delete
40
+ from .expression import delete as delete
41
+ from .expression import desc as desc
42
+ from .expression import distinct as distinct
43
+ from .expression import except_ as except_
44
+ from .expression import except_all as except_all
45
+ from .expression import exists as exists
46
+ from .expression import extract as extract
47
+ from .expression import false as false
48
+ from .expression import False_ as False_
49
+ from .expression import FromClause as FromClause
50
+ from .expression import func as func
51
+ from .expression import funcfilter as funcfilter
52
+ from .expression import Insert as Insert
53
+ from .expression import insert as insert
54
+ from .expression import intersect as intersect
55
+ from .expression import intersect_all as intersect_all
56
+ from .expression import Join as Join
57
+ from .expression import join as join
58
+ from .expression import label as label
59
+ from .expression import LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT
60
+ from .expression import (
61
+ LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY,
62
+ )
63
+ from .expression import LABEL_STYLE_NONE as LABEL_STYLE_NONE
64
+ from .expression import (
65
+ LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL,
66
+ )
67
+ from .expression import lambda_stmt as lambda_stmt
68
+ from .expression import LambdaElement as LambdaElement
69
+ from .expression import lateral as lateral
70
+ from .expression import literal as literal
71
+ from .expression import literal_column as literal_column
72
+ from .expression import modifier as modifier
73
+ from .expression import not_ as not_
74
+ from .expression import null as null
75
+ from .expression import nulls_first as nulls_first
76
+ from .expression import nulls_last as nulls_last
77
+ from .expression import nullsfirst as nullsfirst
78
+ from .expression import nullslast as nullslast
79
+ from .expression import or_ as or_
80
+ from .expression import outerjoin as outerjoin
81
+ from .expression import outparam as outparam
82
+ from .expression import over as over
83
+ from .expression import quoted_name as quoted_name
84
+ from .expression import Select as Select
85
+ from .expression import select as select
86
+ from .expression import Selectable as Selectable
87
+ from .expression import SelectLabelStyle as SelectLabelStyle
88
+ from .expression import SQLColumnExpression as SQLColumnExpression
89
+ from .expression import StatementLambdaElement as StatementLambdaElement
90
+ from .expression import Subquery as Subquery
91
+ from .expression import table as table
92
+ from .expression import TableClause as TableClause
93
+ from .expression import TableSample as TableSample
94
+ from .expression import tablesample as tablesample
95
+ from .expression import text as text
96
+ from .expression import true as true
97
+ from .expression import True_ as True_
98
+ from .expression import try_cast as try_cast
99
+ from .expression import tuple_ as tuple_
100
+ from .expression import type_coerce as type_coerce
101
+ from .expression import union as union
102
+ from .expression import union_all as union_all
103
+ from .expression import Update as Update
104
+ from .expression import update as update
105
+ from .expression import Values as Values
106
+ from .expression import values as values
107
+ from .expression import within_group as within_group
108
+ from .visitors import ClauseVisitor as ClauseVisitor
109
+
110
+
111
+ def __go(lcls: Any) -> None:
112
+ from .. import util as _sa_util
113
+
114
+ from . import base
115
+ from . import coercions
116
+ from . import elements
117
+ from . import lambdas
118
+ from . import selectable
119
+ from . import schema
120
+ from . import traversals
121
+ from . import type_api
122
+
123
+ if not TYPE_CHECKING:
124
+ base.coercions = elements.coercions = coercions
125
+ base.elements = elements
126
+ base.type_api = type_api
127
+ coercions.elements = elements
128
+ coercions.lambdas = lambdas
129
+ coercions.schema = schema
130
+ coercions.selectable = selectable
131
+
132
+ from .annotation import _prepare_annotations
133
+ from .annotation import Annotated
134
+ from .elements import AnnotatedColumnElement
135
+ from .elements import ClauseList
136
+ from .selectable import AnnotatedFromClause
137
+
138
+ _prepare_annotations(ColumnElement, AnnotatedColumnElement)
139
+ _prepare_annotations(FromClause, AnnotatedFromClause)
140
+ _prepare_annotations(ClauseList, Annotated)
141
+
142
+ _sa_util.preloaded.import_prefix("sqlalchemy.sql")
143
+
144
+
145
+ __go(locals())
@@ -0,0 +1,132 @@
1
+ # sql/_dml_constructors.py
2
+ # Copyright (C) 2005-2026 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: https://www.opensource.org/licenses/mit-license.php
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import TYPE_CHECKING
11
+
12
+ from .dml import Delete
13
+ from .dml import Insert
14
+ from .dml import Update
15
+
16
+ if TYPE_CHECKING:
17
+ from ._typing import _DMLTableArgument
18
+
19
+
20
+ def insert(table: _DMLTableArgument) -> Insert:
21
+ """Construct an :class:`_expression.Insert` object.
22
+
23
+ E.g.::
24
+
25
+ from sqlalchemy import insert
26
+
27
+ stmt = insert(user_table).values(name="username", fullname="Full Username")
28
+
29
+ Similar functionality is available via the
30
+ :meth:`_expression.TableClause.insert` method on
31
+ :class:`_schema.Table`.
32
+
33
+ .. seealso::
34
+
35
+ :ref:`tutorial_core_insert` - in the :ref:`unified_tutorial`
36
+
37
+
38
+ :param table: :class:`_expression.TableClause`
39
+ which is the subject of the
40
+ insert.
41
+
42
+ :param values: collection of values to be inserted; see
43
+ :meth:`_expression.Insert.values`
44
+ for a description of allowed formats here.
45
+ Can be omitted entirely; a :class:`_expression.Insert` construct
46
+ will also dynamically render the VALUES clause at execution time
47
+ based on the parameters passed to :meth:`_engine.Connection.execute`.
48
+
49
+ :param inline: if True, no attempt will be made to retrieve the
50
+ SQL-generated default values to be provided within the statement;
51
+ in particular,
52
+ this allows SQL expressions to be rendered 'inline' within the
53
+ statement without the need to pre-execute them beforehand; for
54
+ backends that support "returning", this turns off the "implicit
55
+ returning" feature for the statement.
56
+
57
+ If both :paramref:`_expression.insert.values` and compile-time bind
58
+ parameters are present, the compile-time bind parameters override the
59
+ information specified within :paramref:`_expression.insert.values` on a
60
+ per-key basis.
61
+
62
+ The keys within :paramref:`_expression.Insert.values` can be either
63
+ :class:`~sqlalchemy.schema.Column` objects or their string
64
+ identifiers. Each key may reference one of:
65
+
66
+ * a literal data value (i.e. string, number, etc.);
67
+ * a Column object;
68
+ * a SELECT statement.
69
+
70
+ If a ``SELECT`` statement is specified which references this
71
+ ``INSERT`` statement's table, the statement will be correlated
72
+ against the ``INSERT`` statement.
73
+
74
+ .. seealso::
75
+
76
+ :ref:`tutorial_core_insert` - in the :ref:`unified_tutorial`
77
+
78
+ """ # noqa: E501
79
+ return Insert(table)
80
+
81
+
82
+ def update(table: _DMLTableArgument) -> Update:
83
+ r"""Construct an :class:`_expression.Update` object.
84
+
85
+ E.g.::
86
+
87
+ from sqlalchemy import update
88
+
89
+ stmt = (
90
+ update(user_table).where(user_table.c.id == 5).values(name="user #5")
91
+ )
92
+
93
+ Similar functionality is available via the
94
+ :meth:`_expression.TableClause.update` method on
95
+ :class:`_schema.Table`.
96
+
97
+ :param table: A :class:`_schema.Table`
98
+ object representing the database
99
+ table to be updated.
100
+
101
+
102
+ .. seealso::
103
+
104
+ :ref:`tutorial_core_update_delete` - in the :ref:`unified_tutorial`
105
+
106
+
107
+ """ # noqa: E501
108
+ return Update(table)
109
+
110
+
111
+ def delete(table: _DMLTableArgument) -> Delete:
112
+ r"""Construct :class:`_expression.Delete` object.
113
+
114
+ E.g.::
115
+
116
+ from sqlalchemy import delete
117
+
118
+ stmt = delete(user_table).where(user_table.c.id == 5)
119
+
120
+ Similar functionality is available via the
121
+ :meth:`_expression.TableClause.delete` method on
122
+ :class:`_schema.Table`.
123
+
124
+ :param table: The table to delete rows from.
125
+
126
+ .. seealso::
127
+
128
+ :ref:`tutorial_core_update_delete` - in the :ref:`unified_tutorial`
129
+
130
+
131
+ """
132
+ return Delete(table)