Represent a ``VALUES`` construct that can be used as a FROM element in a statement. The :class:`_expression.Values` object is created from the :func:`_expression.values` function. .. versionadded:: 1.4
| 3324 | |
| 3325 | |
| 3326 | class Values(roles.InElementRole, HasCTE, Generative, LateralFromClause): |
| 3327 | """Represent a ``VALUES`` construct that can be used as a FROM element |
| 3328 | in a statement. |
| 3329 | |
| 3330 | The :class:`_expression.Values` object is created from the |
| 3331 | :func:`_expression.values` function. |
| 3332 | |
| 3333 | .. versionadded:: 1.4 |
| 3334 | |
| 3335 | """ |
| 3336 | |
| 3337 | __visit_name__ = "values" |
| 3338 | |
| 3339 | _data: Tuple[Sequence[Tuple[Any, ...]], ...] = () |
| 3340 | _column_args: Tuple[NamedColumn[Any], ...] |
| 3341 | |
| 3342 | _unnamed: bool |
| 3343 | _traverse_internals: _TraverseInternalsType = [ |
| 3344 | ("_column_args", InternalTraversal.dp_clauseelement_list), |
| 3345 | ("_data", InternalTraversal.dp_dml_multi_values), |
| 3346 | ("name", InternalTraversal.dp_string), |
| 3347 | ("literal_binds", InternalTraversal.dp_boolean), |
| 3348 | ] + HasCTE._has_ctes_traverse_internals |
| 3349 | |
| 3350 | name_cte_columns = True |
| 3351 | |
| 3352 | def __init__( |
| 3353 | self, |
| 3354 | *columns: _OnlyColumnArgument[Any], |
| 3355 | name: Optional[str] = None, |
| 3356 | literal_binds: bool = False, |
| 3357 | ): |
| 3358 | super().__init__() |
| 3359 | self._column_args = tuple( |
| 3360 | coercions.expect(roles.LabeledColumnExprRole, col) |
| 3361 | for col in columns |
| 3362 | ) |
| 3363 | |
| 3364 | if name is None: |
| 3365 | self._unnamed = True |
| 3366 | self.name = _anonymous_label.safe_construct(id(self), "anon") |
| 3367 | else: |
| 3368 | self._unnamed = False |
| 3369 | self.name = name |
| 3370 | self.literal_binds = literal_binds |
| 3371 | self.named_with_column = not self._unnamed |
| 3372 | |
| 3373 | @property |
| 3374 | def _column_types(self) -> List[TypeEngine[Any]]: |
| 3375 | return [col.type for col in self._column_args] |
| 3376 | |
| 3377 | @util.ro_non_memoized_property |
| 3378 | def _all_selected_columns(self) -> _SelectIterable: |
| 3379 | return self._column_args |
| 3380 | |
| 3381 | @_generative |
| 3382 | def alias(self, name: Optional[str] = None, flat: bool = False) -> Self: |
| 3383 | """Return a new :class:`_expression.Values` |