有类似推荐的项目也可。
![]() | 1 encro 277 天前 ![]() |
![]() | 2 encro 277 天前 不仅支持 async , 且支持如同 django 一样的模块化, 支持模块化迁移, 支持模块命令, 代码提示友好。 |
4 lyhapple 277 天前 目前我用的方案是 fastapi+sqlalchemy+alembic ,习惯了之后感觉还不错。 |
5 wryyyyyyyyyyyy 277 天前 sqlalchemy sqlmodel ,这个是 fastapi 开发者对 sqlalchemy + pydantic 的封装,部分情况使用起来更方便一点。 |
![]() | 6 lzyong2019 OP alembic 它貌似只会生成迁移的模版,然后 upgrade 跟 downgrade 是需要自己实现的吧 。还是说我使用方式出错了 |
8 TimeFlies12 277 天前 @lzyong2019 alembic revision --autogenerate 会根据现有 Model 和数据库自动生成 upgrade & downgrade 迁移脚本。你使用的方式不对。另外也需要注意你的 db Model 是否被加载到 |
![]() | 10 niubee1 277 天前 fastapi+pydantic+sqlalchemy+alembic 整个一套,搞东西还是蛮快的 |
11 bitmin 277 天前 我用 sqlmodel ,使用 pydantic 的模型更方便 我很喜欢写起来像写 sql 的方式,只要会写 sql 就会用 写起来就是 select(func.IF(,,).label('a'), func.sum(), func.count()).select_from(A).join().outerjoin().where().group_by() update(A).where(and_(A.id == 1, A.status == 1)).values() delete(A).where(or_(A.status ==0, col(A.b).is_(None))) 也可以 a = await session.get(A, 1) a.b = c await session.commit() 或者 a = A() session.add(a) await session.commit() 缺点是 sqlalchemy 每次查询都会开事务,我还配置不来不开事务,曲线救国自己封装了 asyncmy 一起用 |
12 Gress 277 天前 sqlalchemy 太难用了,实体类关联查询老容易 N+1 ,还得显式指定 |
![]() | 13 TimePPT PRO @bitmin sqlmodel demo 试了下,写起来是挺爽 之前官方的 roadmap 里( https://github.com/fastapi/sqlmodel/issues/654 )说会加 Async tools and docs 和 Integrated migrations (using Alembic). 但好像一直没动静。 所以我选择观望下 |
![]() | 14 Jason168 277 天前 我用的 tortoise-orm 还行 |
![]() | 15 iorilu 276 天前 sqlalchemy 标配 alembic 不过这东西上手没那么容易, 文档也不容易看明白 |
![]() | 16 UN2758 276 天前 emmmm ,要不看看 utilmeta ?除了 sse\websocket\stream response 和关系表创建有点问题外,其他情况下 orm 类似 django 风格也挺好用的 |
![]() | 17 izoabr 276 天前 ![]() 最近好多人推 django-ninja ,也可以了解一下,我是习惯了 Django 的 ORM 的 filter ,用 select where 用不太习惯 |
![]() | 18 mingwiki 275 天前 我还在用 peewee,简单好用 异步对我影响不大 |