V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wuwukai007
V2EX  ›  Python

觉得 django ORM 和 sqlalchemy 都不太好用

  •  
  •   wuwukai007 · 2021-11-25 18:33:11 +08:00 · 3983 次点击
    这是一个创建于 854 天前的主题,其中的信息可能已经有所发展或是发生改变。

    django

    • 不支持 join group by 关键字 要用 filter 和 values 隐式做到
    • 要用 annotate 才能 取别名,否则还要 extra 写字符串
    • 某些函数不支持,比如 date_format
    • extra 比较灵活,但又不支持 join 😯

    sqlalchemy

    • 在 flask 中 使用,会有上下文问题
    • to_dict 还要自己写 ,create 方法没有,必须写 add,commit
    • 写完 sqlalchemy 语句,跟写 sql 感觉没啥区别,
    19 条回复    2021-12-15 11:34:09 +08:00
    johnsona
        1
    johnsona  
       2021-11-25 18:42:53 +08:00 via iPhone
    Trim21
        2
    Trim21  
       2021-11-25 18:43:48 +08:00 via Android
    peewee ?
    johnsona
        3
    johnsona  
       2021-11-25 18:44:06 +08:00 via iPhone
    那就自己写 sql 自己关连接 自己处理 sql 注入 也没什么
    v2exblog
        4
    v2exblog  
       2021-11-25 19:11:15 +08:00
    借楼同问
    sola97
        5
    sola97  
       2021-11-25 19:20:58 +08:00 via Android   ❤️ 1
    Python 的 orm 总感觉没有 java 爽
    makelove
        6
    makelove  
       2021-11-25 20:43:12 +08:00
    不满意自己造轮子呢,我是用自己写的 ORM
    我不喜欢 django 这种封装过头的做法
    Kobayashi
        7
    Kobayashi  
       2021-11-25 20:44:21 +08:00 via Android
    @Trim21 peewee 就算了吧,没有数据库迁移支持。另外作者没有支持异步打断,还劝别人使用 eventlet ,这都什么年代了。
    Aksura
        8
    Aksura  
       2021-11-25 20:44:36 +08:00
    sqlalchemy 是有 core 和 orm 两部分的,用 core 写 SQL 也是可以的。
    gjquoiai
        9
    gjquoiai  
       2021-11-26 03:11:06 +08:00   ❤️ 1
    天下第一 sqlalchemy 吹来了!
    1. 不知道你说的上下文问题是什么问题,不过 flask-sqlalchemy 这个库会搞的不伦不类的,我更习惯裸用(
    2. Row 有_asdict() 方法,不过序列化和模型最好还是分开; data mapping 模式的 ORM 就是这么个逻辑,有一些库(或者手写也不麻烦)可以提供 active record 的调用方法
    3. flavor 问题,无法置评
    zachlhb
        10
    zachlhb  
       2021-11-26 08:17:12 +08:00 via iPhone
    Django orm 有扩展可以增加 group by 功能的
    zachlhb
        11
    zachlhb  
       2021-11-26 08:38:13 +08:00 via iPhone
    而且 Django orm 里是有 group by 操作的,只是和其他 orm 思路不同罢了,一般 orm 是在查询时就定义 group_by ,而 django orm 是先查询到 queryset 列表,然后在 queryset.query.group_by 参数再来定义分组字段
    limyel
        12
    limyel  
       2021-11-26 10:58:25 +08:00
    @sola97 Java 的 orm 是指 mybatis 吗
    book1925
        13
    book1925  
       2021-11-26 10:58:26 +08:00
    好巧昨天我就在研究这个,不过 python 好像找了一圈没找到 mybatis 这种好用的,也准备勉强试试 sqlalchemy 。。
    hutoer
        14
    hutoer  
       2021-11-27 20:28:17 +08:00
    还有 2 个也可以看下:
    hutoer
        15
    hutoer  
       2021-11-27 20:29:01 +08:00
    ponyorm 、orator
    v2exblog
        16
    v2exblog  
       2021-11-27 22:48:14 +08:00
    @gjquoiai 学会了,老哥你有教程吗,想学一下你平时的牛逼用法(崇拜
    cz5424
        17
    cz5424  
       2021-11-27 23:29:16 +08:00 via iPhone
    无论什么语言都有上下文问题吧,因为都必须先连接数据库
    raynix
        18
    raynix  
       2021-11-30 05:58:54 +08:00
    碰巧我也在比较这两个 ORM ,感觉 Django 容易一些,功能暂时够用
    yanqd
        19
    yanqd  
       2021-12-15 11:34:09 +08:00
    可以关注一下 SQLModel: https://sqlmodel.tiangolo.com/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5440 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:53 · PVG 16:53 · LAX 01:53 · JFK 04:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.