Python ORM Bee V1.6.0 发布,拦截器/缓存/复杂 where 条件/高效 Update


Pythone ORM Bee 是基于 Python 的 ORM 工具;让你使用 Python 开发数据库应用更简单!

Flask + Bee 开发python web系统更加快.

几行代码,就能让你完成数据库的查改增删:

    suid = Suid()
    #查询所有记录
    orderList = suid.select(Orders())  # select all
    #插入一条记录
    suid.insert(orders)
    #更新,删除记录
    n1 = suid.update(orders)
    n2 = suid.delete(orders)

 

主要功能

V1.6.0

1.6.0(2025·劳动节)

  1. 优化BeeSql
  2. 增强代码
  3. 增加命名转换支持
  4. 增加拦截器支持
  5. 记录sql执行时间
    可配置当sql执行时间小于一定值时不打印
  6. 调整select_by_id,delete_by_id:
    def select_by_id(self, entity_class, *ids)
    def delete_by_id(self, entity_class, *ids)
  7. PreConfig.config_path用于设置配置文件/Sqlite数据库文件所在的路径
  8. 支持复杂的where语句构造器Condition
    e.g. name!='aaa',age>=10, like, between,group by,having,order,paging(start,size)
  9. 支持Update Set设置更新的表达式构造器Condition
  10. select查询支持指定要查询的字段
  11. 处理查询的Result结果;
  12. 转换设置参数的类型
  13. 缓存支持
    缓存key支持使用md5
  14. 查询结果bool类型结果转换
  15. config 完善
  16. 支持python版本:3.8.10+
  17. generate bean/entity file
  18. bean/entity中间类型支持
  19. 缓存实体field_and_type
  20. 面向对象方式,创建表时,支持在实体声明唯一约束的字段和不允许为空的字段:
    unique_key={"name","type"}
    not_null_filels={"name","type"}

往期回顾:

V1.0 发布

V1.1 发布

V1.3

V1.5.4

快速开始:

安装依赖包

在命令行输入以下命令:

pip install ormbee
 

ORM Bee pypi url:
https://pypi.org/project/ormbee/

 

1. 配置db连接信息

 


1. 配置db连接信息
1.1.can custom your db Module
in bee.json or bee.properties set dbModuleName

 {
 "dbname": "SQLite",
 "database": "bee.db", 
 //default support: pymysql,sqlite3,cx_Oracle,psycopg2 (no need set)
 "dbModuleName":"sqlite3"
 }
#value is: MySql,SQLite,Oracle,
#MySQL config
#bee.db.dbname=MySQL
#bee.db.host =localhost
#bee.db.user =root
#bee.db.password =
#bee.db.database =bee
#bee.db.port=3306

# SQLite
bee.db.dbname=SQLite
bee.db.database =bee.db
1.2.if do not want to use the default config file(bee.json or bee.properties),
can set the db_config info yourself.

# #mysql
dict_config = {
'dbname':'MySQL',
'host': 'localhost',# 数据库主机
'user': 'root',# 替换为您的 MySQL 用户名
'password': '',# 替换为您的 MySQL 密码
'database': 'bee',# 替换为您的数据库名称
'port':3306
}

honeyConfig= HoneyConfig()
honeyConfig.set_db_config_dict(dict_config)

2. 使用Bee操作数据库

2. 使用Bee操作数据库

class Orders:
id = None
name = None 
remark = None

# can ignore
def __repr__(self): 
returnstr(self.__dict__)


# also can use field type as :int
class Orders8:
__tablename__ = "orders"
id:int = None
name:str = None 
remark:str = None

def __repr__(self): 
returnstr(self.__dict__)


class Student2:
id = None
name = None 
age = None
remark = None
addr = None

def __repr__(self): 
returnstr(self.__dict__)


from bee.api import Suid, SuidRich
from bee.config import PreConfig
from bee.honeyfactory import BF
from bee.osql.bee_enum import Op

if __name__ == "__main__":

# set bee.properties/bee.json config folder
PreConfig.config_path="E:\\Bee-Project\\resources"

# select record
suid = Suid()
orderList = suid.select(Orders())# select all

# insert
orders = Orders()
orders.id = 1
orders.name = "bee"
orders.remark = "test"

suid = Suid()
suid.insert(orders)

# update/delete
orders = Orders()
orders.name = "bee130"
# For safety reasons
# Fields that are not present in the entity will be ignored.
orders.ext = "aaa"
orders.id = 1

suid = Suid()
n1 = suid.update(orders)
n2 = suid.delete(orders)
print(n1)
print(n2)

# batch insert
student0 = Student2()
student0.name = "bee"
student1 = Student2()
student1.name = "bee1"
student1.addr = ""
student1.age = 40
entity_list = []
entity_list.append(student0)
entity_list.append(student1)

suidRich = SuidRich()
insertNum = suidRich.insert_batch(entity_list)
print(insertNum)

#how to use Condition for advanced query and update
condition = BF.condition()
condition.op("age", Op.ge, 22)
condition.op("remark", Op.eq, None)
stuList = suidRich.select(Student2(), condition)
# select ... from student2 where age >= ? and remark is null
for stu in stuList:
print(stu)

# all stu'age add 1 if id>5
condition = BF.condition()
condition.setAdd("age", 1)
condition.op("id", Op.ge, 5)
updateNum = suidRich.updateBy(Student2(), condition)
# update student2 set age = age + ? where id >= ?
print("updateNum:", updateNum)

#SuidRich: insert_batch,select_first,updateBy
#复杂的where过滤条件、group,having,order by,Update Set等可使用Condition;

3. 其它功能
主要API在bee.api.py
Suid: simple API for Select/Update/Insert/Delete
SuidRich : select_paging, insert_batch, updateBy, select_first,select_by_id,
delete_by_id,select_fun,count,exist,create_table,index_normal,unique
PreparedSql: select, select_dict, modify, modify_dict

 

诚邀您的加入!

如果您还想添加什么功能,请到评论区告诉我们。

项目首页:https://gitee.com/automvc/BeePy/

https://github.com/automvc/BeePy/


相關推薦

2024-08-07

源绑定及数据读写分离,满足复杂业务场景需求。 数据缓存:GDAO内置缓存机制,允许对缓存数据的有效期和回收策略进行精细控制。 广泛兼容:理论上支持所有实现Go数据库驱动接口的数据库,轻松对接多种数据源。 高级

2022-12-07

:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化;具有分布式特性。从 2.0 开始,增加了 Sharding 分片功能,使用分库分表更方便! Sharding 功能,还在继续哦,有什么好的主意,赶紧告诉我们!

2022-09-12

ixed bug: 1)level 2缓存判断;TypeHandlerRegistry返回值类型转换 2)拦截器对象不使用原型模式产生脏数据,改为原型模式 参考实例(部分): Android 环境使用 Bee  https://my.oschina.net/u/4111850/blog/5538992 HarmonyOS 鸿蒙使用 ORM Bee 访问数据库实

2024-09-28

myBatis 映射核心功能 实用性:支持读写分离,数据缓存等高级orm功能,支持高效序列化 主要功能 生成代码:运行gdao代码生成工具,创建数据库表的标准化实体类。类似thrift/protobuf。 高效序列化:表的标准化实体类

2024-10-24

gorm+sqlx+原生sql执行》 Gdao 1.2.2 更新内容 新增写过期缓存 通过 BindExpireWriteClass 或  BindExpireWriteClassWithCacheHandle 设置写过期缓存,当设置的类发生写操作时,将自动清除缓存数据 。 使用示例: func TestExpire

2022-09-15

loadAll功能,按照查询顺序输出结果 4、增加sql自定义处理拦截器用于进行类似租户过滤等(beta),spring.sqltoy.sqlInterceptors数组   public interface SqlInterceptor {     /**      * @TODO 对最终执行sql和sql参数进行处理  

2023-01-31

/github.com/threefish/sqltoy-idea-plugins 更新内容 1、优化反向缓存匹配获取精准key值用in(:keys) 代替 like :nameKeyWords场景 <sql id="qstart_order_search"> <filters> <!-- unmatched-return-self:缓存未匹配到key直接用名称代替(默认true) cac

2023-02-07

:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化;具有分布式特性。高级要求,还可以方便自定义 SQL 语句。 下期功能预告: Bee V2.0同步更新Maven. 你还想添加什么功能,请到评论区告诉我们!

2023-02-14

志功能 完善:不同包的实体即使指定同一个表也不能共享缓存 完善:Json String类型查询结果转换增强 fixed bug:PreparedSql接口的批量插入insertBatch空指针和占位符 愿今天是没有Bug的情人节! V2.0.x 其它特性,请阅读: https://www.oschina.net/

2023-11-15

ue-quill 1.1.0 => 1.2.0 功能更新 update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析 update 优化 适配 maxkey 新版本 update 优化 @Sensitive脱敏增加角色和权限校验 (感谢 盘古给你一斧) update 优化

2023-11-16

update 优化 携带 clientid 跨域问题 update 优化 数据权限拦截器优先判断方法是否有效 提高性能减少无用sql解析 update 优化 适配 maxkey 新版本 update 优化 @Sensitive脱敏增加角色和权限校验 (感谢 盘古给你一斧) update 优化

2023-02-17

nnotation) 完善:不同包的实体即使指定同一个表也不能共享缓存 完善:Json String类型查询结果转换增强 fixed bug:PreparedSql接口的批量插入insertBatch空指针和占位符 各V2.0.x.x版本更新详细请看以下列表.   https://www.oschina.net/news/224660

2023-09-17

念: 跨平台:可以嵌入到JVM脚本引擎(js, groovy, lua, python, ruby)及GraalVM支持的部分语言。 很小巧:0.2Mb(且是功能完整,方案丰富;可极大简化数据库开发)。 有个性:不喜欢反射(主打弱类型)、不喜欢配置(除了连

2024-08-01

简介:Jdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用Jdao,可以在持久层设计上,减少30%甚至50%以上的编程