觉得 django ORM 和 sqlalchemy 都不太好用 - V2EX
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 4838 次点击
    这是一个创建于 1418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 注入 也没什么
    joApioVVx4M4X6Rf
        4
    joApioVVx4M4X6Rf  
       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  
       
    而且 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
    joApioVVx4M4X6Rf
        16
    joApioVVx4M4X6Rf  
       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     Solana     1280 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:15 PVG 01:15 LAX 10:15 JFK 13:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86