forked from pypi/warehouse
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SQLAlchemy 2.0 Declarative Syntax (pypi#14266)
* Step 1 of moving to Declarative syntax Refs: https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html#step-one-orm-declarative-base-is-superseded-by-orm-declarativebase - Replace abstract concrete base with simpler pattern Since we don't actually care about the polymorphism, we can simplify and have the models map correctly. Follows pattern as shown in the examples: https://docs.sqlalchemy.org/en/20/_modules/examples/generic_associations/table_per_related.html - Minor modification to Index definition so we don't generate new indices as a result. - Update DBML tests to use the base model, override metadata Signed-off-by: Mike Fiedler <[email protected]> * Step 2 of moving to Declarative syntax In this step, we find&replace instances of `Column()` with `mapped_column()` which presents an identical API. The columns are still `Mapped[Any]` at this stage, those should be added in Step 3. Refs: https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html#step-two-replace-declarative-use-of-schema-column-with-orm-mapped-column Two Tables have not been converted to the declarative syntax, as they do not have a primary key set yet. That needs to be handled out of band, as there's data quality/migrations that need to happen first. Signed-off-by: Mike Fiedler <[email protected]> * Step 3 - accounts models Apply changes to the models in the Accounts segment. https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html#step-three-apply-exact-python-types-as-needed-using-orm-mapped Adds verbosity that should be simplified in Step 4. Signed-off-by: Mike Fiedler <[email protected]> * fix: apply nullable changes to match database Towards Step 4, apply these qualifiers so that autogenerated migrations perform no changes. Signed-off-by: Mike Fiedler <[email protected]> * Step 4 - clean up mapped_column for account models Now that we're past mapping the datatypes, we can simplify the declarations by removing unnecessary details. Refs: https://docs.sqlalchemy.org/en/20/changelog/whatsnew_20.html#step-four-remove-orm-mapped-column-directives-where-no-longer-needed Include a rename for UUID vs PG_UUID. Signed-off-by: Mike Fiedler <[email protected]> * Step 5 - extract a common type Since we use the pattern of a "bool, default false", we can extract it to a custom type, and use it in the `Mapped` annotation, and slim down the repeated definitions. If this proves a useful type to other modules, it can be refactored out to a utility location. Signed-off-by: Mike Fiedler <[email protected]> --------- Signed-off-by: Mike Fiedler <[email protected]>
- Loading branch information
1 parent
e0c6a58
commit f4f80c3
Showing
21 changed files
with
406 additions
and
397 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.