Metadata-Version: 2.1
Name: ysql
Version: 1.4.4
Summary: a more efficient and concise SQLite framework.
Home-page: https://gitee.com/darlingxyz/ysql
Author: dfqxhhh
Author-email: dfqxhhh@163.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE.txt

<h1 align='center'> ysql框架 </h1>

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

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

- 第三方库依赖：无
- 项目地址：[ysql (gitee)](https://gitee.com/darlingxyz/ysql)
- 更新日志：[CHANGELOG.md](https://gitee.com/darlingxyz/ysql/blob/master/CHANGELOG.md)
- 使用文档：[ysql (github)](https://darlingxyz.github.io/ysql/#/)

------

**作者**：大风起兮呼呼呼

**邮箱**：dfqxhhh@163.com

**时间**：2023-9-9
# 更新日志

## [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及各个装饰器。
