一个将数据类绑定到sqlite3数据库的小型包
项目描述
datalite3
需要注意的是,Datalite不适用于安全Web应用程序,它仅适用于可以信任用户输入的情况。
Datalite是一个简单的Python包,可以将您的数据类绑定到sqlite3数据库中的表,使用它非常简单,假设您有一个数据类定义,只需将装饰器@datalite("mydb.db")
添加到定义的顶部,数据类现在将绑定到文件mydb.db
下载和安装
您可以通过以下方式安装datalite3
pip install datalite3
或者您可以克隆存储库并运行
python setup.py
Datalite没有依赖项!因为它建立在Python 3.6+标准库之上。尽管如此,其测试需要unittest
库。
Datalite应用实例
from dataclasses import dataclass
from datalite3 import datalite
@datalite(db="mydb.db")
@dataclass
class Student:
student_id: int
student_name: str = "John Smith"
此代码片段将在sqlite3数据库文件mydb.db
中生成一个名为student
的表,具有列student_id
和student_name
,分别具有SQL类型INTEGER
和TEXT
。student_name
的默认值为John Smith
。将自动添加第三个列__id__
来存储记录的主键。
##基本用法
条目操作
在传统地创建对象后,鉴于您使用了datalite
装饰器,对象有三个新方法:.create_entry()
、.update_entry()
和.remove_entry()
,您可以使用前者将对象添加到其相关表,并使用后者将其删除。您还可以使用中间方法更新记录。
student = Student(10, "Albert Einstein")
student.create_entry() # Adds the entry to the table associated in db.db.
student.student_id = 20 # Update an object on memory.
student.update_entry() # Update the corresponding record in the database.
student.remove_entry() # Removes from the table.
自定义主键
如果我们想将一个或多个字段声明为记录主键的一部分,我们只需用Primary[type]
来注释它们,其中type
可以是int
、float
、str
或bytes
之一。
from dataclasses import dataclass
from datalite3 import datalite, Primary
@datalite(db="mydb.db")
@dataclass
class Student:
student_id: Primary[int]
student_name: str = "John Smith"
此代码段将在sqlite3数据库文件mydb.db
中生成一个名为student
的表,包含列student_id
和student_name
,分别对应SQL类型INTEGER
和TEXT
。列student_id
还将作为主键,不会添加__id__
列。
获取记录
:warning: 限制!fetch只能正确获取有限类别的数据:int、float、bytes和str!
最后,您可能希望从已存在的表中重新创建对象,为此我们提供了fetch
模块,您可以从中导入fetch_from(class_, key)
以及is_fetchable(className, key)
,前者根据其唯一键从SQL数据库中获取记录,而后者检查是否可获取(很可能是检查是否存在)。
>>> fetch_from(Student, 20)
Student(student_id=20, student_name='Albert Einstein')
我们还有三个辅助方法
fetch_all(class_)
:获取给定类的所有记录。返回一个class_
对象的元组;fetch_if(class_, condition)
:获取满足给定条件的类型为class_
的所有记录。这里条件必须用SQL语法编写;fetch_equals(class_, field, value)
:获取类型为class_
且列field
设置为value
的所有记录;
分页
datalite
还支持在fetch_if
、fetch_all
和fetch_where
中进行分页,您可以为每一页指定page
(页码)和element_count
(每页元素数量,默认10),以便获取记录的子集。
项目详情
datalite3-1.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49d590e1eb62668809cc8e7cea28c1c629b3f63f4234292401e18c1e6f5f609d |
|
MD5 | 0ba24ca4d2db4208c7276a611b2d94a5 |
|
BLAKE2b-256 | d638f3bd1b095a0d1fc6dcc1779568adbc1232c71243a806b047982fafe800f7 |