跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • SQLModel
未分類
29 8 月 2021

SQLModel

SQLModel

資深大佬 : Livid 10

来自 FastAPI 作者的新作品:
https://github.com/tiangolo/sqlmodel
https://sqlmodel.tiangolo.com/
大佬有話說 (25)

  • 資深大佬 : learningman

    传统的那几个 orm,peewee 啥的在 fastapi 用都挺蛋疼的

  • 資深大佬 : superrichman

    一周 4 千 star,真 NB 。

  • 資深大佬 : coolcatha

    就感觉,这个作者挺会起名字的,fastapi sqlmodel 听起来都很厉害

  • 資深大佬 : mmdsun

    用过 Entity Framework Core
    你会发现其他 O/RM 都用不下去了。
    我用过很多 ORM 库。hibernate,JPA 。Python 的,SQLalchemy,Django 都用过。没一个好用的。。

  • 資深大佬 : yccalculus

    @mmdsun 试试 sqlsugar

  • 資深大佬 : janxin

    @mmdsun 要么试试 Python 的 Pony

  • 資深大佬 : janxin

    SQLModel 相当于在 Pydantic 和 SQLAlchemy 之间加了一层兼容适配,其实还是可以的。不过其实我觉得直接把 SQLAlchemy 包起来比较好,现在还需要手工引入 SQLAlchemy 的相关东西

  • 資深大佬 : LeeReamond

    好奇底层实现原理,因为 sqlalchemy 毕竟是同步的。所以它是以一个单线程运行 sqlalchemy,然后搞了一个异步事务中心来安排业务上的请求?然后如果我要使用 oracle 的话那 sqlalchemy 还要再把请求转发到 cxoracle 来执行。。。套娃之终极套娃啊

  • 資深大佬 : so1n

    @LeeReamond sqlalchemy 把生成 sql 和执行 sql 拆分了 asyncio 的 orm 都只用到 sqlalchemy 的生成部分

  • 資深大佬 : so1n

    @LeeReamond 然后最新版本的 sqlalchemy 也支持异步了

  • 資深大佬 : chroming

    正好公司项目在用 fastapi 和 SQLAlchemy,尝试一下这个

  • 資深大佬 : coolcatha

    @mmdsun 我感觉 Django 的很不错了啊!能说说这些大概有哪些问题吗?

  • 資深大佬 : hjahgdthab750

    @mmdsun #4 NPoco 也不错,EF 我感觉有点重

  • 資深大佬 : mywaiting

    RAW SQL 语句一把梭,容易理解,也不用再多学一门关于 ORM 的“方言”

  • 資深大佬 : Vegetable

    @mywaiting 总有人说 sql 一把梭,我非常好奇你们写测试吗?你们测试能在 sqlite 或者 h2 之类的数据库上跑起来吗?反正用 orm 不在意这些。

  • 資深大佬 : sudoy

    我刚刚准备好好学一学 SQLAlchemy 呢,就看到这个了,看起来不错的样子

  • 資深大佬 : micean

    @Vegetable
    orm 能写 merge into/insert ignore/insert on conflict/with as/select from partition 吗?

  • 資深大佬 : mywaiting

    @Vegetable 测试有写的,在对应的数据库写入测试数据简单测试即可
    在数据表结构确定的情况下,SQL 语句是一目了然的,无论是写测试用例还是后期维护都相当简单

  • 資深大佬 : ospider

    别开新坑了,我就关心啥时候能把 FastAPI 的 API Reference 加上……查个参数还得去 tutorial 里翻,服了

  • 資深大佬 : l4ever

    初步看了一下文档, 看起来像 SQLAlchemy.

  • 資深大佬 : 2i2Re2PLMaDnghL

    Pydantic 和 SQLAlchemy 结合必会诞生的。
    我都快自己动手了。

  • 資深大佬 : Rwing

    还有很多人没明白 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 都不能叫

  • 資深大佬 : Macv1994

    看了下,跟 SQLAlchemy 很像啊

  • 資深大佬 : frostming

    都闪开,让我吐槽
    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. 如果言语过激请原谅,这是看过代码之后的感想,并不是酸。

  • 資深大佬 : abersheeran

    修复一下上面的链接: https://github.com/samuelcolvin/pydantic/issues/2678
    支持上 frostming 的说法。另外,fastapi 的性能本就没有他宣传的好,如果还用同步代码,那就更差劲了,比 Django 还慢。而作者本人给出的样例居然是同步的,属实逗笑我了。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具