用于在dict接口中包装数据存储的库。
dictwrap的Python项目详细描述
听写纸
用于在字典接口中包装持久数据存储的python库。
JSON指令
示例用法:
from dictwrap import json_dict
config = json_dict("config_file.json")
config["hello"] = "world"
这将围绕config_file.json
的内容建立字典包装。对字典的更改将自动写入json文件。
覆盖对json文件的自动更新并手动保存更改:
from dictwrap import json_dict
config = json_dict("config_file.json", autosave=False)
config["hello"] = "world" # This change is not written to the file yet.
config.save() # The change is now written to the file.
SQL行
示例用法:
from dictwrap import sql_row
row = sql_row("db_driver://user:pass@host/db_name", table="example", lookup_field="id", lookup_value=1)
默认情况下,在调用save
方法之前,您不会将保存更改设置为附加项:
row["foo"] = "bar" # Not saved to the database yet.
row.save() # Database is now updated.
在创建行时,您可以使用autosave
属性覆盖它:
row = sql_row("sqlite://", table="example", lookup_field="id", lookup_id=1, autosave=True)
row["foo"] = "bar" # Database is automatically updated.
要从数据库更新字典的数据,请调用refresh
方法:
row.refresh()
通过在创建行时使用autorefresh
属性,每当在字典中查找键值时,都将从数据库中更新数据:
row = sql_row("sqlite://", table="example", lookup_field="id", lookup_id=1, autorefresh=True)
print(row["foo"]) # Accessing the key now calls the database to update any data that has been changed.
如果只需要将数据库中的某些字段包含在字典中,则在创建行时传递字段名列表:
row = sql_row("sqlite://", table="example", lookup_field="id", lookup_id=1, fields=["foo", "bar"])
若要在数据库中创建新行,请不要提供lookup_field
或lookup_id
属性,并将字典传递到data
属性:
row = sql_row("sqlite://", table="example", update={"foo": "bar"})
# Creates a row in the `example` table with the `foo` field set to "bar".
您需要为此工作提供数据库所需的所有字段的有效数据。
csv_行
示例用法:
from dictwrap import csv_row
row = csv_row("file_path.csv", row_id=0)
这将创建一个字典,用于读取和写入提供的csv文件的第一行。(记住索引号数组的起始位置。)
您可以通过行号或通过为要查找的行传递带键值对的字典来标识csv文件中要在字典中包装的行。例如,如果csv文件有一个名为Author
的字段,您就可以像这样查找Ursula LeGuin
的行:
row = csv_row("authors.csv", row_id={"Author": "Ursula LeGuin"})
默认情况下,将从csv文件的第一行读取字段名。如果文件缺少这样的标题行,字段名可以显式地作为列表传递:
row = csv_row("authors.csv", row_id=1, fieldnames=["ID", "Name", "Rating"])
API U记录
示例用法:
from dictwrap import api_record
record = api_record("httsp://fake.org/api/record/1/", auth=("user", "pass"))
这将调用提供的url端点上的get-request方法,并提供元组中提供的用于身份验证的用户名/密码。saving将调用同一方法上的patch方法。稍后我打算为这种类型创建更多的灵活性。
联系人
这个项目显然开发得很早。我开始创建一个易于安装的包,里面有一些字典包装,我发现自己经常重写。为了好玩,我添加了更多的类型。
请通过psbleep@protonmail.com与我联系,或者在github上打开一个问题/请求,其中包含问题、建议或改进。