V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ht201908001
V2EX  ›  分享创造

我开发了一款 Python 版的 mybatis ORM

  •  
  •   ht201908001 · 9 天前 · 1158 次点击
    最近在学习 python web 开发,一直没找到类似 mybatis 的半自动化 ORM ,所以开发了一个,
    地址在 https://github.com/ralgond/mybatis-py

    主要功能如下:
    1 、半自动化的 ORM ;
    2 、支持像 mybatis 那样的动态 SQL ;
    3 、支持类似 mybatis 注解的装饰器;
    4 、支持 LRU 缓存,支持缓存过期机制;
    5 、尽可能地使用 Prepared statement ,避免 SQL 字符串拼接,能有效地防止 SQL 注入;
    6 、预防大对象机制,避免 OOM 。

    未来的开发方向是支持多种数据库。


    如果你有什么需求和想法,尽管提出给我,如有必要我会尽最大努力去实现,谢谢大家!
    8 条回复    2024-12-09 16:09:34 +08:00
    hefish
        1
    hefish  
       9 天前
    看着挺高级的。
    Kite6
        2
    Kite6  
       9 天前 via Android
    和 sqlmodel 相比有什么优势吗
    sagaxu
        3
    sagaxu  
       9 天前
    相比 sqlalchemy 或者 peewee 有什么改进?

    mybatis 也就国内比较热衷,国外主流还是 JPA ,连 JOOQ 都比 mybatis 火
    ht201908001
        4
    ht201908001  
    OP
       9 天前
    @Kite6 mybatis-py 主要优势是能手写 SQL ,可以将简单的 SQL 写在装饰器上,也可以在 xml 文件中编写复杂的 SQL 。感谢你提供 sqlmodel 这个选项,我刚好可以从它那汲取一些特性,让 mybatis-py 更好用。
    ht201908001
        5
    ht201908001  
    OP
       9 天前
    @sagaxu mybatis-py 和两者的关系应该就是像 mybatis 和 hibernate 的关系一样,mybatis-py 适合对 SQL 控制有较高要求的场景。
    sagaxu
        6
    sagaxu  
       9 天前
    @ht201908001 跟 hibernate 对应的是 sqlalchemy ORM 这一层,但这一层可以完全不用,直接用 sqlalchemy CORE ,它只做连接池,表结构元数据,SQL 生成,不同 dialect 适配等基础工作。可以当作是支持运行时反射数据库分析表结构的 JOOQ 。

    从 SQL Builder 层面看,大家都是用不同的 DSL 拼 SQL ,如果都约定好拼 SQL 的代码放在规定的地方,且只做拼 SQL 的事情,用哪个 DSL 拼都不会有太大差别。
    GeekGao
        7
    GeekGao  
       9 天前
    Non-Pythonic
    tairan2006
        8
    tairan2006  
       9 天前
    对于动态语言搞这个其实不太合适,ruby 更灵活呢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5379 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:24 · PVG 16:24 · LAX 00:24 · JFK 03:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.