Comments (28)
Now Ready for Pydantic 2.0 π
Update: Since SQLModel version 0.0.14, both Pydantic V1 and v2 are now supported ππ
from sqlmodel.
- Support for SQLAlchemy 2.0.
from sqlmodel.
This is great news! So excited to start using these new features. I'm curious how you are planning in integrating Alembic?
from sqlmodel.
You can help me ensure each existing PR is in shape (has tests, solves the problem, etc.)
π«‘
So glad to see signs of life in this amazing project.
from sqlmodel.
I am looking forward for SQLAlchemy v2 support. This should enable ClickHouse columnar storage.
from sqlmodel.
Integrated migrations (using Alembic).
from sqlmodel.
Since the dev dependency, FastAPI, no longer supports Python 3.7 from version 0.104.0 onwards, will SQLModel also need to drop support for Python 3.7 in the future? If so, it would likely be a massive undertaking. It should be included in the roadmap together.
Pydantic and SQLAlchemy have already dropped support for Python 3.7.
pydantic/pydantic@0564c0d
sqlalchemy/sqlalchemy@4da59c6
Additionally, Python 3.7 reached its End of Life (EOL) a few months ago, so it's time to say goodbye.
https://devguide.python.org/versions/
Some things that may need to be done
- β¬οΈ Drop Support for Python 3.7
- β¬οΈ Upgrade Python version in Docker images for GitHub Actions
from sqlmodel.
Hi @tiangolo, are #689 and #635 ready to be merged?
from sqlmodel.
Is there a branch of this project or a starter template for using FastAPI latest + SQLAlchemy 2 + Pydantic 2?
I'm starting a new project with FastAPI latest + SQLAlchemy 2 and I'm not sure what would be the right way to set it up? Should I just avoid SQLModel altogether?
from sqlmodel.
Are we going to get an update on the Async docs ?
from sqlmodel.
Hi @tiangolo, are #689 and #635 ready to be merged?
from sqlmodel.
Thanks @honglei.
I've also found
- https://chaoticengineer.hashnode.dev/fastapi-sqlalchemy and
- https://github.com/rhoboro/async-fastapi-sqlalchemy
I'll personally not use SQLModel. It introduces way too much logic for a simple type checking functionality for me.
Duplicating a small amount of code in the codebase is much more maintainable than introducing an external dependency with a lot of logic involved.
from sqlmodel.
I'm curious what are the tricky parts in SQLAlchemy and pydantic 2.0.0 versions...
from sqlmodel.
@tiangolo Could you please provide any updates on this? I've begun a new FastAPI project, and I'm uncertain whether I should build upon the SQLModel project or stay with SQLAlchemy. What are your long term plans with this project?
from sqlmodel.
@cay89 This and the cookiecutter
template are under development; from @tjeaneric, it looks like the sqlalchemy
and pydantic
support is done, but the alembic
support hasn't been released yet.
You should be able to use sqlmodel==0.0.14
and manually generate migrations for your fastapi
project: alembic init --template async alembic
. You will need to manually edit the generated alembic.ini
and alembic/env.py
to use sqlmodel
's metadata object. This was possible in 0.0.8
before the sqlalchemy
relationship
support broke around sqlalchemy==1.4.x
. Things are still sort of in limbo for official design patterns when considering a backend stack consisting of fastapi
, sqlalchemy
, pydantic
, and alembic
. This integration has been tracking between the authors of these projects for more than a few years. The official design patterns for backend work are right around the corner.
from sqlmodel.
@manish181192 I haven't seen an "ETA"; some of the remaining work is staged as PRs:
I haven't seen any work covering typer
usage in sqlmodel
.
from sqlmodel.
Is the goal to support both Pydantic v1 and v2 and SQL Alchemy v1 and v2? Or only v1+v1 and v2+v2? The combination of both will become difficult.
from sqlmodel.
We are using fast API with SQL Model for our microservices. And planning to add Llama index which needs SQLAlchemy above 1.4.41. But does not support by current SQL Model versions (required: >=1.4.17,<=1.4.41).
@tiangolo Need your kind help.
from sqlmodel.
Sorry if this is adding noise βΒ just noticing the next items in the roadmap are somewhat achieved in #632 (open since August). Any chance we could understand the project's thinking wrt when something like that might be merged or reworked?
from sqlmodel.
Hello team, Amazing work, What is the ETA on Async milestone? Can we bump it up before pydantic? @tiangolo
from sqlmodel.
from sqlmodel.
Since the dev dependency, FastAPI, no longer supports Python 3.7 from version 0.104.0 onwards, will SQLModel also need to drop support for Python 3.7 in the future? If so, it would likely be a massive undertaking. It should be included in the roadmap together.
from sqlmodel.
Hi! I just came across #63 and I was surprised this would not work out of the box, is this kind of behaviour considered at any stage on the roadmap?
Kind of related is #468 , I have it almost sorted out setting the engine with json serializer and deserializer but now I just noticed that if I change a field in the model the update woin't go through when committing.
Thanks!
from sqlmodel.
Take a look at this.
from sqlmodel.
@AntonDeMeester @tiangolo Only support SQLAlchemy v1.4 with 2.0-style and v2.0?
from sqlmodel.
@hyperknot Try #632
from sqlmodel.
Are the items on the roadmaps features you plan to implement yourself, or are they open for PRs?
In any case, this is really exciting! I can't wait to be able to use a Pydantic v2 + SQLModel (with all the great SQLAlchemy 2 features) + FastAPI stack!
from sqlmodel.
When dealing with relational models,sqlalchemy only needs to define relationships on one side,sqlmodel needs to define relationships on both sides, and the complexity of the model class is very difficult to deal with. The screen full of relationships makes my brain a little hot, especially the many-to-many relationships, even if the model class is written according to the documentation, it becomes extremely complex.
from sqlmodel.
Related Issues (20)
- There is no unique constraint matching given keys (one-to-many, connecting with many-to-many tables) HOT 2
- Preparing for Pydantic v2 release HOT 13
- Data Integrity: Raise error on attempt to delete an object required via a Relationship HOT 8
- [Querying] negating `Model.boolean` in `where()` HOT 2
- [M2M] Query dependent incl. `link_model` fields HOT 3
- Could not refresh instance HOT 9
- SQLModel doesn't recognize Relationship between models HOT 1
- Get select with options (selectinload) using response schema HOT 2
- Dose there any better way to write timezone aware datetime field without using the SQLAlchemy ? HOT 3
- Obtaining `TypeError: Cannot pickle 'module' object` on models with many-to-many relationships HOT 2
- Order of columns in the table created does not have 'id' first, despite the order in the SQLModel. Looks like it's prioritising fields with sa_column HOT 3
- Erro ao executar uvicorn.run(...) HOT 1
- Many to many relationship between a table and itself HOT 6
- How to add current date time by default on a table declaration? HOT 13
- Add documentation about how to use the async tools (session, etc) HOT 5
- async relationship bug HOT 9
- Internal link failed at create-db-and-table.md
- Field cannot autocompletion when its a SQLModel HOT 6
- Add an overload to the `exec` method with `_Executable` statement for update and delete statements HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqlmodel.