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 · 8 天前 · 1922 次点击

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