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
| 3400 | |
| 3401 | |
| 3402 | class Values(roles.InElementRole, HasCTE, Generative, LateralFromClause): |
| 3403 | """Represent a ``VALUES`` construct that can be used as a FROM element |
| 3404 | in a statement. |
| 3405 | |
| 3406 | The :class:`_expression.Values` object is created from the |
| 3407 | :func:`_expression.values` function. |
| 3408 | |
| 3409 | .. versionadded:: 1.4 |
| 3410 | |
| 3411 | """ |
| 3412 | |
| 3413 | __visit_name__ = "values" |
| 3414 | |
| 3415 | _data: Tuple[Sequence[Tuple[Any, ...]], ...] = () |
| 3416 | _column_args: Tuple[NamedColumn[Any], ...] |
| 3417 | |
| 3418 | _unnamed: bool |
| 3419 | _traverse_internals: _TraverseInternalsType = [ |
| 3420 | ("_column_args", InternalTraversal.dp_clauseelement_list), |
| 3421 | ("_data", InternalTraversal.dp_dml_multi_values), |
| 3422 | ("name", InternalTraversal.dp_string), |
| 3423 | ("literal_binds", InternalTraversal.dp_boolean), |
| 3424 | ] + HasCTE._has_ctes_traverse_internals |
| 3425 | |
| 3426 | name_cte_columns = True |
| 3427 | |
| 3428 | def __init__( |
| 3429 | self, |
| 3430 | *columns: _OnlyColumnArgument[Any], |
| 3431 | name: Optional[str] = None, |
| 3432 | literal_binds: bool = False, |
| 3433 | ): |
| 3434 | super().__init__() |
| 3435 | self._column_args = tuple( |
| 3436 | coercions.expect(roles.LabeledColumnExprRole, col) |
| 3437 | for col in columns |
| 3438 | ) |
| 3439 | |
| 3440 | if name is None: |
| 3441 | self._unnamed = True |
| 3442 | self.name = _anonymous_label.safe_construct(id(self), "anon") |
| 3443 | else: |
| 3444 | self._unnamed = False |
| 3445 | self.name = name |
| 3446 | self.literal_binds = literal_binds |
| 3447 | self.named_with_column = not self._unnamed |
| 3448 | |
| 3449 | @property |
| 3450 | def _column_types(self) -> List[TypeEngine[Any]]: |
| 3451 | return [col.type for col in self._column_args] |
| 3452 | |
| 3453 | @util.ro_non_memoized_property |
| 3454 | def _all_selected_columns(self) -> _SelectIterable: |
| 3455 | return self._column_args |
| 3456 | |
| 3457 | @_generative |
| 3458 | def alias(self, name: Optional[str] = None, flat: bool = False) -> Self: |
| 3459 | """Return a new :class:`_expression.Values` |