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 · 13 天前 · 2137 次点击

    django

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

    sqlalchemy

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