From 5a70588bf6602603337f968030b424d84724133e Mon Sep 17 00:00:00 2001 From: ferkans-amir Date: Mon, 27 Jul 2026 23:03:51 +0200 Subject: [PATCH 1/2] fix(sql): accept QueryableAttribute and ColumnElement in col() helper --- sqlmodel/sql/expression.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sqlmodel/sql/expression.py b/sqlmodel/sql/expression.py index 92d772a883..07a3e1d082 100644 --- a/sqlmodel/sql/expression.py +++ b/sqlmodel/sql/expression.py @@ -18,7 +18,7 @@ TypeCoerce, WithinGroup, ) -from sqlalchemy.orm import InstrumentedAttribute, Mapped +from sqlalchemy.orm import InstrumentedAttribute, Mapped, QueryableAttribute from sqlalchemy.sql._typing import ( _ColumnExpressionArgument, _ColumnExpressionOrLiteralArgument, @@ -197,6 +197,9 @@ def within_group( def col(column_expression: _T) -> Mapped[_T]: - if not isinstance(column_expression, (ColumnClause, Column, InstrumentedAttribute)): + if not isinstance( + column_expression, + (ColumnClause, Column, InstrumentedAttribute, QueryableAttribute, ColumnElement), + ): raise RuntimeError(f"Not a SQLAlchemy column: {column_expression}") return column_expression # type: ignore From 0060965aceabbd8303374c5c75ec3d01b79fa099 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:04:21 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=A8=20Auto=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlmodel/sql/expression.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sqlmodel/sql/expression.py b/sqlmodel/sql/expression.py index 07a3e1d082..8572034c82 100644 --- a/sqlmodel/sql/expression.py +++ b/sqlmodel/sql/expression.py @@ -199,7 +199,13 @@ def within_group( def col(column_expression: _T) -> Mapped[_T]: if not isinstance( column_expression, - (ColumnClause, Column, InstrumentedAttribute, QueryableAttribute, ColumnElement), + ( + ColumnClause, + Column, + InstrumentedAttribute, + QueryableAttribute, + ColumnElement, + ), ): raise RuntimeError(f"Not a SQLAlchemy column: {column_expression}") return column_expression # type: ignore