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 · 3 天前 · 1446 次点击

    django

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

    sqlalchemy

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