Hi Mike. Thanks, it makes sense. On another topic, the docs say:
However, version 2.0 hopes to start embracing *PEP 484* <https://www.python.org/dev/peps/pep-0484> and other new features to a great degree Would you please explain why SQLAlchemy wants to move to embracing type hints to a large degree? I'm a bit ambivalent towards type hints and would love to hear your perspective. Thanks and best regards, Matthew On Thursday, May 13, 2021 at 5:54:21 AM UTC-7 Mike Bayer wrote: > SQLAlchemy has a general philosophy of fn(*args) vs fn(list): > > 1. if the sequence of items represents **database data**, we use a > **list** or other inline sequence. E.g. in_(): > > column.in_([1, 2, 3]) > > 2. if the sequence of items represents **SQL structure**, we use a > variable length *Args. E.g. Table: > > Table(name, metadata, *cols_and_other_constraints) > > and_(), or(), etc: > > and_(*sequence_of_expressions( > > ORM query: > > session.query(*sequence_of_entities_expressions_etc) > > select() should work the same as all these other APIs and in particular > it's now largely cross-compatible with ORM query as well. > > The reason select() has always accepted a a list is because the very > ancient and long de-emphasized API for select() looked like this: > > stmt= select({table.c.col1, table.c.ol2], table.c.col1 == > "some_expression", order_by=table.c.col1) > > that is, the "generative" API for select() that is very normal now did not > exist. There was no select().where().order_by(), that was all added years > after SQLAlchemy's first releases. All of those kwargs are also > deprecated as they are very ancient legacy code and we'd like SQLAlchemy's > API to be clean and consistent and not allowing of many variations of the > same thing, as this makes the whole system easier to use and understand. > > So the use of a list in select() is based on long ago deemphasized API > that SQLAlchemy 2.0 seeks to finally remove. As this API is one of the > most complicated to provide a backwards-compatibility path for, it's taken > a very long time for us to get there. But here we are. > > > > > On Thu, May 13, 2021, at 2:10 AM, mkmo...@gmail.com wrote: > > Hello, > > I am on Sqlalchemy 1.2 and looking to upgrade to 1.4. > > I have a lot of Core code that looks like this: > > # returns an array of columns > select_fields = make_select_fields(...) > sel = select(select_fields) > > Passing an array to select is now deprecated, so I'm planning on changing > all my code to: > > sel = select(*select_fields) > > I was curious to know what the rationale for the change in this API is. > > Thanks and best regards, > > Matthew > > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/c0de313c-a113-4e8f-9ae4-f30be96a8c9dn%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy/c0de313c-a113-4e8f-9ae4-f30be96a8c9dn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/d6216602-9827-432d-bac1-94f7290d3992n%40googlegroups.com.