Bridge dataclasses with SQLModel, pydantic and sqlalchemy #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the last few years,
dataclasses
have become the standard way of creating Python objects.They're convenient and fast because they don't validate at runtime and rely on static checkers.
On the other hand, pydantic and sqlalchemy are popular because they validate at runtime, do extensive meta programming.
This is an effort to have the cake and eat it too. You can use your dataclasses as usual. But with the new decorator, you get:
These provide the same functionality as
SQLModel
. Note that this doesn't include support for more advanced features like controlling the type used for the column in the database, foreign keys.But hopefully it's a good start and we can keep adding support for more metadata in the future.
Benchmarks: