实际工作中,从开发效率上看使用orm比直接敲sql语句快的多,基于日常的定时上报业务工作开发了一款轻量级orm系统。
- Python版本要求:python3.5 and 3.6 (developed with 3.5)
- 目前支持的数据库:mysql
- 功能特点:
- 可以同时连接不同数据库
- 可以自动维护连接
github
Requirements
- mysqlclient==1.3.14
Install
- git clone git@github.com:yunsonbai/yunorm.git
- python setup.py install
Quick Start
注意
表必须在数据库中才能使用yunorm,目前yunorm不支持创建表格
Documentation
-
支持的字段
- Prikey
- CharField
- IntegerField
- DateTimeField
- DecimalField
-
过滤操作
- lt: '<'
- gt: '>'
- une: '!='
- lte: '<='
- gte: '>='
- in: 'in'
-
支持的函数
- filter
- create
- update
- delete
- limit
- order_by
- group_by
- desc_order_by
- first
- all
- count
注意
需在末尾调用data()函数才能获得数据
res = TestModel.objects.filter(**select_term).all().data()
res = TestModel.objects.filter(**select_term).limit(0, 10).data()
res = TestModel.objects.filter(
**select_term).order_by(id).limit(0, 7).data()
- Get Data
select_term = {
"zan_num__gt": 0,
"id__gt": 3700000
}
res = TestModel.objects.filter(**select_term).all().data()
feed = TestModel.objects.filter(id=3700000).first().data()
- Create Data
def test_create_orm(i):
create_data = {
'label': 1,
'title': 'test_{0}'.format(i)
}
TestOrm.create(**create_data)
- Update Data
def test_update_orm():
update_data = {
'title': 'hello yunsonbai',
'label': 10
}
res = TestOrm.objects.filter(id__in=[1, 2]).data()
for r in res:
r.update(**update_data)
# or
res = TestOrm.objects.filter(id=3).first().data()
res.update(**update_data)
- Delete Data
def test_delete_orm():
res = TestOrm.objects.filter(id__in=[7, ]).data()
for r in res:
result = r.delete()
print(result)