SQLAlchemy JSON 项目教程
1. 项目的目录结构及介绍
sqlalchemy-json/
├── github/
│ └── workflows/
│ └── sqlalchemy_json.yml
├── test/
│ └── test_files.py
├── .gitignore
├── LICENSE
├── README.rst
├── setup.py
└── sqlalchemy_json.py
github/workflows/
: 包含 GitHub Actions 的工作流配置文件。test/
: 包含项目的测试文件。.gitignore
: 指定 Git 忽略的文件和目录。LICENSE
: 项目的许可证文件。README.rst
: 项目的说明文档。setup.py
: 项目的安装脚本。sqlalchemy_json.py
: 项目的主要代码文件。
2. 项目的启动文件介绍
项目的启动文件是 sqlalchemy_json.py
,其中定义了主要的 JSON 类型和相关的处理逻辑。以下是该文件的主要内容:
from sqlalchemy.types import TypeDecorator, String
from sqlalchemy.dialects.postgresql import JSONB
import json
class JsonString(TypeDecorator):
"""Enables JSON storage by encoding and decoding on the fly."""
impl = String
def process_bind_param(self, value, dialect):
return json.dumps(value)
def process_result_value(self, value, dialect):
return json.loads(value)
from sqlalchemy_json import mutable_json_type
postgres_jsonb_mutable = mutable_json_type(dbtype=JSONB)
string_backed_nested_mutable = mutable_json_type(dbtype=JsonString, nested=True)
该文件定义了 JsonString
类型,用于在数据库中存储 JSON 数据,并提供了编码和解码的功能。此外,还定义了 postgres_jsonb_mutable
和 string_backed_nested_mutable
类型,用于处理 PostgreSQL 的 JSONB 类型和嵌套的 JSON 数据。
3. 项目的配置文件介绍
项目的配置文件主要是 setup.py
,用于定义项目的安装和依赖信息。以下是该文件的主要内容:
from setuptools import setup, find_packages
setup(
name='sqlalchemy-json',
version='0.7.0',
description='Full-featured JSON type with mutation tracking for SQLAlchemy',
long_description=open('README.rst').read(),
author='edelooff',
url='https://github.com/edelooff/sqlalchemy-json',
packages=find_packages(),
install_requires=[
'sqlalchemy',
'sqlalchemy-utils'
],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
],
)
该文件定义了项目的名称、版本、描述、作者、URL、包列表、依赖项和分类器等信息。通过运行 pip install -e .
命令,可以安装项目及其依赖项。