当前位置: 首页 > 工具软件 > Quick-ORM > 使用案例 >

kbengine配置mysql,GitHub - asynchronoust/kbengine-orm: mysql orm for kbengine

邵凯定
2023-12-01

kbengine-orm

mysql orm for kbengine

对kbegnine中的mysql操作,简单做了一下ORM封装

feature

支持查找 find

支持插入 insert

支持批量插入 insert many

支持删除 delete

支持更新 update

支持存在更新,不存在插入功能 dup_key_update

支持的过滤等操作指令有:

gt, gte:大于,大于等于

lt, lte:小于,小于等于

eq:相等

neq:不相等

order_by:排序

limit:返回行数限制

in:in操作

Quick start

来看个例子

from dbs.db_base import BaseModel

from dbs.columns import INT

import time

class TestModel(BaseModel):

__table__ = "table_name"

__fields__ = {

"phone": INT,

"code": INT,

"time": INT,

"enable": INT,

}

def __init__(self):

super(TestModel, self).__init__()

def find_phone(self):

# 查找过滤,可以链式调用

self.dml.eq("phone", "1111").lt("time", 1111).limit(10)

self.dml.find(["phone", "code"], self._find_phone_cb)

def _find_phone_cb(result_list, error):

"""

result_list: 是一个list,元素是字典,每个字典是要查询的字段的key value值

这个例子中就是 [{"phone": "111", "code": 1}, {"phone": "222", "code": 2}]

"""

pass

def upsert_sms_code(self, phone, code, time, cb):

data = {

"phone": phone,

"code": code,

"time": time,

"enable": 1

}

# 如果存在就更新,不存在就插入,使用了mysql的dup_key_update功能

self.dml.insert(data, cb, dup_key_update=True, update_data=data)

def set_v_code_used(self, phone):

data = {

"enable": 2

}

self.dml.eq("phone", phone).update(data)

def delete_row(self, phone):

self.dml.eq("phone", phone)

self.dml.delete()

使用步骤:

创建一个model类,继承BaseModel类

写表的name, __table__

写表的字段以及类型,__fields__

这样类可以使用 self.dml实例,这是一个DML实例,可以通过此实例进行Mysql的各种相关的操作,可以看看此类的源码了解更多

另外,如果有比较复杂的sql语句,没有接口可以满足,可以使用execute_custom_sql函数

在kbengine中使用,就将dbs目录拷贝到server_common下面即可

完善与改进

现在这个功能封装很简单,和市面上的开源的ORM框架没得比,我这只提供简单的mysql操作,对于kbengine这样面向对象的写代码方式来说大多数是够用了

现在kbengine支持多数据库,此库还不支持选择数据库,还是使用default数据库

 类似资料: