a more efficient and concise SQLite framework.
Project description
ysql框架
更高效更简洁的sqlite数据库框架,借鉴了安卓Room框架的设计,将框架划分为Entity数据类、Dao数据访问类、Database数据库类三个层次。
框架直接建立在sqlite官方库的基础之上,无其他依赖,性能损失很小,隐藏(自动实现)了许多烦人的中间细节,只需要关心sql语句与python数据应用场景。
- 第三方库依赖:无
- 项目地址:ysql (gitee)
- 更新日志:CHANGELOG.md
- 使用文档:ysql (github)
作者:大风起兮呼呼呼
时间:2023-9-9
更新日志
[1.4.5] - 2023-12-22
优化
- 移除了不必要的日志记录。
[1.4.4] - 2023-12-21
优化
- 将默认表名替代符的功能提取为了Dao的参数enable_table_name_substitute, 通过设置该参数决定是否启用表名替代功能。
[1.4.3] - 2023-12-21
优化
- 优化了日志设置。
[1.4.2] - 2023-12-20
新增
- 返回的数据类型支持了namedtuple。
修复
- 修复并强化了返回entity时的字段自动匹配逻辑。
[1.4.1] - 2023-12-20
修复
- 修复了设置返回格式时,返回entity的判断错误。
- 增加了返回entity时的字段自动匹配,避免了赋值错位问题。
变更
- 将Dao类中的execute_sql方法更名为execute,与database和sqlite3保持一致。
[1.4.0] - 2023-12-19
变更
- 重构了部分代码,提高了整体性能。
优化
-
优化了查询结果的返回格式设置,原来直接返回具名元组存在逻辑不合理, 现返回默认的tuple格式,但可通过Dao和Sql装饰器进一步控制返回格式, 支持tuple、dataclass、dict、entity四种格式。
-
将'limit 1'单条记录的自动识别提取为了新的Dao设置参数auto_single_record。
[1.3.15] - 2023-12-18
优化
- 小幅优化了insert批量插入的性能。
[1.3.14] - 2023-12-18
新增
- 新增了Dao装饰器的return_type参数,可以控制查询结果的数据类型,默认格式为dataclass。
优化
- 移除了entity中check_type时对注释类型的检查,因为在dao建表时会进行检查。
- 优化了insert批量插入的性能。
- 移除了对connection的row_factory方法的使用,将格式转换放到了Dao中处理。
变更
- Dao装饰器的返回格式不再采取具名元组,而是dataclass、dict、tuple。
[1.3.13] - 2023-12-15
修复
- 修复了数据类属性使用bool类型时的未检验问题。
优化
- 将日志log合并到了database文件中。
[1.3.12] - 2023-12-14
优化
- 在init文件中新增了Daofunc。
- 将entity中的内部常量从类中定义改变为模块内定义
[1.3.11] - 2023-12-13
变更
- 将execute_sql方法的params参数名更改为了args。
[1.3.10] - 2023-12-08
新增
- 新增了DaoFunc类,用Dao类继承后可以获取更明确的代码提示,将insert方法、execute_sql方法均移动到了此类中。
- Dao新增了execute_sql方法,对于复杂的sql语句应该通过此方法执行。
优化
- 移除了InsertMany装饰器,将批量插入的功能集成到了Insert装饰器中。
变更
- Sql装饰器不再具有传递静态sql隐藏参数的功能,只允许直接向Sql装饰器传递静态sql语句,简化了用法。
[1.3.9] - 2023-12-06
优化
- 优化了单条记录的返回形式。若sql中使用了 'limit 1' 则直接以Record类型返回这条记录,而不再使用list存储并返回。
[1.3.8] - 2023-12-06
新增
- 新增了InsertMany装饰器,可以批量插入数据。
- 新增了Dao数据访问类的内置批量插入函数insert_many(entities)
[1.3.7] - 2023-12-06
优化
- 去除了表名替代符的次数检查,可以在复杂sql中任意使用表名替代符。
[1.3.6] - 2023-12-06
新增
- 新增了ignore约束,允许entity数据类的属性不参与建表。
[1.3.5] - 2023-12-01
修复
- 修复了异常处理中的问题。
新增
- 补充了部分测试用例。
[1.3.4] - 2023-11-25
新增
- 完善了文档。
[1.3.3] - 2023-11-24
变更
- 移除了Path装饰器。
新增
- 初步发布了使用文档。
[1.3.2] - 2023-11-23
修复
- 修复了日志的错误导入问题。
[1.3.1] - 2023-11-23
变更
- 完善了README文件和示例。
[1.3.0] - 2023-11-23
新增
- 补充了详细的源码文档。
优化
- 重构了部分设计与实现。
- 移除了部分不合理的函数。
- 优化了部分函数名称。
- 内部启用了日志库。
[1.2.2] - 2023-11-22
修复
- 修复了解析类属性值时无法正确返回的问题。
优化
- 更改内部获取属性值函数名为parse_attr_value。
[1.2.1] - 2023-11-19
优化
- entity类型检查时会跳过值为None的属性,不进行检查。
[1.2.0] - 2023-11-19
新增
- entity装饰器现在可以执行类型检查,在每个数据类被实例化的时候,检查其属性值的类型是否与类型注释的一致,并且也会检查类型注释是否在允许的四个基本数据类型中。
优化
- 更改了部分函数的名称,统一‘属性’为'attribute'。
修复
- 修复了解析约束条件函数时,对多元素元组数量判断的问题。
- 修复了对entity使用getattribute方法时,无法获取内部属性的问题。
[1.1.6] - 2023-10-22
新增
- sql装饰器现在可以传递函数对象,在外部调用被装饰方法时,通过decorator_sql_params参数指定其需要的参数。
优化
- dao类中开放了原来私有的cursor属性。
- database类中新增了execute方法,提供了直接执行sql语句的接口。
- 将entity文件中的部分方法签名由field改为了property
[1.1.5] - 2023-10-20
修复
- 修复了database类中开启外键方法中漏掉下划线的语法错误。
[1.1.4] - 2023-10-20
新增
- 新增了database类中开启外键的方法。
[1.1.3] - 2023-10-10
修复
- 修复了entity中注释属性未换行造成的sqlite语法错误。
[1.1.1] - 2023-09-24
修复
- 修复从对数据类赋默认的None值引发的bug,在entity文件的get_value_from_field函数中增加了对None的处理。
- 修复了Constraint类注释方法引发的‘sqlite3.OperationalError: incomplete input’错误。
[1.1.0] - 2023-09-24
优化
- 重新设计并实现了更好的数据类使用方式,实例化速度提高一倍。
- 取消了数据类的描述符,代替为特定格式的元组解析和约束解析。
- 提供了更完整的约束,包括更完整的外键约束、默认值约束、条件约束等。
[1.0.9] - 2023-09-20
修复
- 修复Path装饰器传递路径时,未判断分割出的父目录是否为空,导致makedirs方法报错。
优化
- 隔离了get_example函数到单独的tool文件。
- 添加了包中init文件的导入,可更简洁的导入get_example及各个装饰器。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ysql-1.4.5.tar.gz
(23.2 kB
view hashes)
Built Distribution
ysql-1.4.5-py3-none-any.whl
(16.8 kB
view hashes)