xorm 立项,你心目中 ORM 系统是什么样的(极简风格,极少代码)

2017-03-09 23:43:11 +08:00
 prasanta

xorm

xorm

ORM for the zen of python.

相信大家能通过下面的代码明白我的意思.

model

from xorm import Model
from xorm.fields import *

class User(Model):
  name = Char()
  age = Int()
  is_adult = Bool()
  groups = ManyToMany(Group,related_name="users")

class Group(Model):
  name = Char()
  created_at = DateTime()

migrate

  1. xorm makemigrations
  2. xorm migrate
  3. xorm rollback

query

from .models import User
from xorm import sql

User.list(age_lt = 18, groups__name = "doit").fields(['name', 'age', {'groups': ['name']}])

User.retrive(id=1).fields(['name', 'age'])

User.replace(id=1).data({'name':'test1'})

User.update(id=1).data({'age': 18})

User.create(data={})

User.delete(id=1)a

xorm.sql('SELECT * FROM users')

github 项目地址:https://github.com/gaojiuli/xorm

我还没有开始写,大家帮忙提提意见

6058 次点击
所在节点    Python
43 条回复
thomaspaine
2017-03-09 23:47:12 +08:00
用法感觉和 sqlalchemy 差不多啊
prasanta
2017-03-09 23:50:20 +08:00
@thomaspaine orm 思想都是差不多的, 我的目标是将 api 缩减为常用的几个, 数据表的建立和数据库的迁移傻瓜化, 查询语句直接生成字典, 而不用自己 serializer
jarlyyn
2017-03-10 00:52:19 +08:00
golang 有个 orm 也叫这儿
neoblackcap
2017-03-10 01:01:52 +08:00
讲道理的话,我觉得 ORM 接口做得做好的就是类似 linq 那种,也就是像 PonyORM 或者 macropy 那种。不过他们好像都是 ActiveRecord , SQLAlchemy 是 DataMapper 来的,因此有些人会觉得 SQLAlchemy 比起其他 ORM 难用,关键就是在这里。
zonghua
2017-03-10 01:10:32 +08:00
Django orm
mayne95
2017-03-10 03:17:19 +08:00
所以这个是给 xweb 用的😂
binux
2017-03-10 05:43:14 +08:00
你这一点都不 zen of python
verydxz
2017-03-10 06:14:28 +08:00
xiaket
2017-03-10 06:45:27 +08:00
极简风格,极少代码, 那么已经有 peewee 了.

另同意 @binux, 的确不 zen of python
prasanta
2017-03-10 07:40:50 +08:00
@neoblackcap 我比较喜欢 datamapper
prasanta
2017-03-10 07:41:36 +08:00
@binux 可以给点意见么
prasanta
2017-03-10 07:42:54 +08:00
@xiaket peewee 冗余功能挺多,我主要是针对 restful 接口设计这个 orm
prasanta
2017-03-10 07:43:43 +08:00
@mayne95 虽然是这意思,但是没有耦合!
prasanta
2017-03-10 07:44:15 +08:00
@jarlyyn 这个没关系,改名字还是挺容易的
johnny23
2017-03-10 08:02:32 +08:00
linq2sql
Gem
2017-03-10 08:27:44 +08:00
ActiveRecord !
zhustec
2017-03-10 09:09:41 +08:00
ActiveRecord +1
Lycnir
2017-03-10 09:14:22 +08:00
如果能支持 2.7 的异步,我就用它
prasanta
2017-03-10 09:50:50 +08:00
@Lycnir 可以详细说一下么
est
2017-03-10 10:34:29 +08:00
我现在急需一个混合 backend 的 ORM

比如一个 User 对象, name 是保存在 mysql 里的, login_cnt 登陆次数,保存在 redis 。

惰性求值,结果缓存,能交叉查询等等。

能做出来就厉害了。极大简化 controller 里的面条粗细程度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/346296

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX