您现在的位置是:首页 > 文章详情

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

日期:2025-04-28点击:122

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): 
        return  str(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): 
        return  str(self.__dict__)

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

    def __repr__(self): 
        return  str(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/

原文链接:https://www.oschina.net/news/347235/beepy-1-6-0
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章