Skip to main content

a more efficient and concise SQLite framework.

Project description

ysql框架

更高效更简洁的sqlite数据库框架,借鉴了安卓Room框架的设计,将框架划分为Entity数据类、Dao数据访问类、Database数据库类三个层次。

框架直接建立在sqlite官方库的基础之上,无其他依赖,性能损失很小,隐藏(自动实现)了许多烦人的中间细节,只需要关心sql语句与python数据应用场景。


作者:大风起兮呼呼呼

邮箱dfqxhhh@163.com

时间:2023-9-9

更新日志

[1.4.7] - 2023-12-28

新增

  • Sql和execute新增了fetch_one参数,可以进一步指定是否返回单条记录。

变更

  • 将Dao中获取单条记录参数 'fetch_one' 改为 'auto_fetch_one'。

[1.4.6] - 2023-12-22

变更

  • 将设置返回数据格式的参数 'return_type' 改为 'data_type'。
  • 将表名替代符参数 'enable_table_name_substitute' 改为 'enable_substitute'。
  • 将获取单条记录参数 'auto_single_record' 改为 'fetch_one'。

[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


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.7.tar.gz (23.6 kB view hashes)

Uploaded Source

Built Distribution

ysql-1.4.7-py3-none-any.whl (16.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page