面向命令行的ORM。
项目描述
clirm
命令行ORM(clirm)是一个库,可用于创建简单的ORM,在交互式环境中允许用户操作对象,并且定期运行遍历整个数据库的脚本。
功能包括
- 更改总是立即提交到数据库,因此无需担心单独的后续“保存”步骤。
- 每行只有一个对象,因此用户无需担心编辑一个副本而另一个ORM对象对应的同一行未更改。
- 行中的所有列总是一起检索,以简化上述点的实现。
- 与类型系统的紧密集成。字段可以声明为Field[T](),其中T是正常的Python类型。
Clirm要求每个表都有一个包含唯一标识符的id列。
用法
例如,我们将创建一个包含动物分类的简单数据库
import enum
import sqlite3
from typing import Self
from clirm import Clirm, Field, Model
class Status(enum.Enum):
    living = 1
    recently_extinct = 2
    fossil = 3
CLIRM = Clirm(sqlite3.connect("taxon.db"))
class Taxon(Model):
    clirm = CLIRM
    clirm_table_name = "taxon"
    name = Field[str]()  # string field
    status = Field[Status]()  # enum field
    common_name = Field[str | None]()  # nullable string field
    parent = Field[Self | None]()  # foreign key to self; can also write "Taxon | None"
if __name__ == "__main__":
    txn1 = Taxon.create(
        name="Mammalia", status=Status.living, common_name="Mammals"
    )
    txn2 = Taxon.create(
        name="Rodentia", status=Status.living, common_name="Rodents",
        parent=txn1
    )
    tnx3 = Taxon.create(
        name="Multituberculata", status=Status.fossil, parent=txn1
    )
    living_taxa = Taxon.select().filter(Taxon.status == Status.living)
    assert living_taxa.count() == 2
    assert {txn.common_name for txn in living_taxa} == {"Mammals", "Rodents"}
    for txn in living_taxa:
        txn.common_name = txn.common_name + "!"
    # Change is immediately visible
    assert txn1.common_name == "Mammals!"
支持类型
当前支持以下字段类型
- 原始类型,例如int、str、bool,它们直接传递到数据库
- 枚举,它们在传递到数据库之前转换为它们的值
- 指向其他clirm模型的键,它们以它们的ID存储
- 指向当前类的键,可以用typing.Self表示
- 上述任何类型的可空版本,通过在类型中添加| None表示
可以通过从Field派生并重写deserialize和serialize方法来支持额外的类型。
后端
目前仅支持SQLite作为后端。
变更日志
版本 0.1(2024年4月8日)
- 首次发布
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
         clirm-0.1.tar.gz  (7.4 kB 查看哈希值)
      
    构建分发
         clirm-0.1-py3-none-any.whl  (7.3 kB 查看哈希值)
      
    
    
       关闭
    
      
        
    
    
  
clirm-0.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 9afb9e7cdb8c6da8fc9e3dd5f40c6754bcd108c4d2056d13e6cd747271e4ac4b | |
| MD5 | 25ed1da6294b4319e5eeeed81246381f | |
| BLAKE2b-256 | 4c476f7d4150223e869967250c16a7f77b0db4daf767906942b717d17e3b8ed6 | 
    
       关闭
    
      
        
    
    
  
clirm-0.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b124f692e09f95e00d49d8d89aa3169902e999a4b160bbd7e75afd3f051d9ac3 | |
| MD5 | 794db4a035cb7a5a5033177af5102e4f | |
| BLAKE2b-256 | 096336aedfd68fbdc26d3f714a019a8dc75be7d6c9415cdfa447cc226d45f496 |