Repository navigation
v2.1.2
Release Notes - v2.1.2
Features
Column Name Remapping Without SQLAlchemy
Added support for overriding database column names when not using SQLAlchemy integration. You can now map Python attribute names to different database column names using Column(column_name='...'):
class MyTable(Table, table_name='my_table'):
id: Column
system_var: Column = Column(column_name='systemvar') # Python: system_var, DB: systemvarThis is useful when your database column names don't follow Python naming conventions (e.g., legacy databases with columns like systemvar instead of system_var). See tests/test_query_builder.py:34-54 for examples.
Refactoring
Query Builder Inheritance Hierarchy
All query builders now inherit from a common QueryBuilder abstract base class:
SelectQueryBuilder(formerlyQueryBuilder) - for SELECT queriesInsertBuilder- for INSERT queriesUpdateBuilder- for UPDATE queriesDeleteBuilder- for DELETE queries
This allows middleware and query handlers to accept any builder type through the common interface. The abstract base provides:
to_tsql()- converts to TSQL object (abstract, must implement)render(style)- convenience method to get SQL + parameters directly
Breaking Change Note: The class QueryBuilder is now SelectQueryBuilder. If you were doing type hints like query: QueryBuilder, you'll need to update to either SelectQueryBuilder or the base QueryBuilder class depending on your use case.