1
learningman Aug 31, 2021 via Android
传统的那几个 orm,peewee 啥的在 fastapi 用都挺蛋疼的
|
2
superrichman Aug 31, 2021
一周 4 千 star,真 NB 。
|
3
coolcatha Aug 31, 2021 via iPhone
就感觉,这个作者挺会起名字的,fastapi sqlmodel 听起来都很厉害
|
4
mmdsun Aug 31, 2021 via Android 用过 Entity Framework Core
你会发现其他 O/RM 都用不下去了。 我用过很多 ORM 库。hibernate,JPA 。Python 的,SQLalchemy,Django 都用过。没一个好用的。。 |
5
yccalculus Aug 31, 2021
@mmdsun 试试 sqlsugar
|
7
janxin Aug 31, 2021
SQLModel 相当于在 Pydantic 和 SQLAlchemy 之间加了一层兼容适配,其实还是可以的。不过其实我觉得直接把 SQLAlchemy 包起来比较好,现在还需要手工引入 SQLAlchemy 的相关东西
|
8
LeeReamond Aug 31, 2021
好奇底层实现原理,因为 sqlalchemy 毕竟是同步的。所以它是以一个单线程运行 sqlalchemy,然后搞了一个异步事务中心来安排业务上的请求?然后如果我要使用 oracle 的话那 sqlalchemy 还要再把请求转发到 cxoracle 来执行。。。套娃之终极套娃啊
|
9
so1n Aug 31, 2021
@LeeReamond sqlalchemy 把生成 sql 和执行 sql 拆分了 asyncio 的 orm 都只用到 sqlalchemy 的生成部分
|
10
so1n Sep 1, 2021
@LeeReamond 然后最新版本的 sqlalchemy 也支持异步了
|
11
chroming Sep 1, 2021
正好公司项目在用 fastapi 和 SQLAlchemy,尝试一下这个
|
13
qW7bo2FbzbC0 Sep 1, 2021
@mmdsun #4 NPoco 也不错,EF 我感觉有点重
|
14
mywaiting Sep 1, 2021
RAW SQL 语句一把梭,容易理解,也不用再多学一门关于 ORM 的“方言”
|
15
Vegetable Sep 1, 2021
@mywaiting 总有人说 sql 一把梭,我非常好奇你们写测试吗?你们测试能在 sqlite 或者 h2 之类的数据库上跑起来吗?反正用 orm 不在意这些。
|
16
sudoy Sep 1, 2021
我刚刚准备好好学一学 SQLAlchemy 呢,就看到这个了,看起来不错的样子
|
17
micean Sep 1, 2021
|
18
mywaiting Sep 1, 2021
|
19
4BVL25L90W260T9U Sep 1, 2021
别开新坑了,我就关心啥时候能把 FastAPI 的 API Reference 加上……查个参数还得去 tutorial 里翻,服了
|
20
luckyc Sep 1, 2021
初步看了一下文档, 看起来像 SQLAlchemy.
|
21
2i2Re2PLMaDnghL Sep 1, 2021
Pydantic 和 SQLAlchemy 结合必会诞生的。
我都快自己动手了。 |
22
Rwing Sep 1, 2021 还有很多人没明白 ORM 与 db helper 或者叫 db tool 的区别。
ORM 里很重要的一点是关系映射 Relational Mapping,如何让 db 中的数据以 object 的形式存在。 举个应该是 ORM 基础功能的简单的例子来说: var zhangsan = new Student("张三"); var lisi = new Teacher("李四"); zhangsan.Teacher = lisi ; db.Save(zhangsan); 这时数据库中应该创建了叫张三的学生以及李四的老师,并且张三的老师外键 id 是李四的 id 如果连这个都没法处理,那连 ORM 都不能叫 |
25
Macv1994 Sep 1, 2021
看了下,跟 SQLAlchemy 很像啊
|
26
frostming Sep 3, 2021 都闪开,让我吐槽
1. 不是像 SQLAlchemy (简称 SQLA ),根本就是包了一下 SQLAlchemy,大家不要觉得 ORM 很高大上,现在新出的 python ORM 无一例外都是 SQLA 套壳,这个 SQLModel 更过分,里面除了 main.py 是和 pydantic 互通的部分,其他都是 import SQLA 的类加上泛型标注又放出去的(大家看过代码就知道我没有乱说) 2. 所以这个只能叫做「 SQLA 的扩展」不能叫做一个新的 ORM,该起名叫「 sqla-pydantic 」但那样怎么营销? 3. 作者擅长营销和文档,他在文档里放了一个 tutorial,居然是教你如何用 ORM CRUD,这个就是更初学者友好的 SQLA 文档啊,ORM 哪个核心功能是他写的呢?不要说 SQLA 文档看不懂,其实已经有很大进步了。 4. sqla-pydantic 的连接确实在 fastapi 里非常需要,但我相信之前也有很多人自己做过,不是很难。 5. 还记得 pydantic 被 PEP 563 坑的事情吗? https://github.com/samuelcolvin/pydantic/issues/2678,这个如果没解决好,任何在 Pydantic 之上的库全得废 6. SQLA 是支持异步的,但作者在文档里最重要的 quick start 例子里居然用的同步。 7. 如果言语过激请原谅,这是看过代码之后的感想,并不是酸。 |
27
abersheeran Sep 3, 2021 修复一下上面的链接: https://github.com/samuelcolvin/pydantic/issues/2678
支持楼上 frostming 的说法。另外,fastapi 的性能本就没有他宣传的好,如果还用同步代码,那就更差劲了,比 Django 还慢。而作者本人给出的样例居然是同步的,属实逗笑我了。 |