JSON 스키마를 사용하여 JSON 개체의 유효성을 검사하기 위한 SQLite 확장입니다. sqlite-loadable-rs
및 jsonschema
크레이트를 기반으로 합니다.
귀하의 회사나 조직에서 이 라이브러리가 유용하다고 생각한다면 제 작업을 지원해 보세요!
.load . / jsonschema0
select jsonschema_matches( ' {"maxLength": 5} ' , json_quote( ' alex ' ));
SQLite의 CHECK
제약 조건과 함께 사용하여 테이블에 삽입하기 전에 JSON 열의 유효성을 검사합니다.
create table students (
-- ensure that JSON objects stored in the data column have "firstName" strings,
-- "lastName" strings, and "age" integers that are greater than 0.
data json check (
jsonschema_matches(
json( '
{
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
}
}
}
' ),
data
)
)
);
insert into students(data)
values ( ' {"firstName": "Alex", "lastName": "Garcia", "age": 100} ' );
-- ✓
insert into students(data)
values ( ' {"firstName": "Alex", "lastName": "Garcia", "age": -1} ' );
-- Runtime error: CHECK constraint failed: jsonschema_matches
JSON 스키마와 일치하지 않는 열의 모든 값을 찾습니다.
select
rowid,
jsonschema_matches(
' {
"type": "array",
"items": {
"type": "number"
}
} ' ,
foo
) as valid
from bar
where not valid;
언어 | 설치하다 | |
---|---|---|
파이썬 | pip install sqlite-jsonschema | |
데이터세트 | datasette install datasette-sqlite-jsonschema | |
Node.js | npm install sqlite-jsonschema | |
데노 | deno.land/x/sqlite_jsonschema | |
루비 | gem install sqlite-jsonschema | |
Github 릴리스 | ||
녹 | cargo add sqlite-jsonschema |
sqlite-jsonschema
Python, Node.js 및 Deno 프로그래머를 위해 pip, npm 및 https://deno.land/x에 배포됩니다. 다른 환경에서 사용할 수 있는 사전 구축된 확장도 있습니다.
Python 개발자의 경우 sqlite-jsonschema
Python 패키지를 사용하십시오.
pip install sqlite-jsonschema
그런 다음 sqlite-jsonschema
확장을 sqlite3
연결 개체에 로드할 수 있습니다.
import sqlite3
import sqlite_jsonschema
db = sqlite3 . connect ( ':memory:' )
sqlite_jsonschema . load ( db )
db . execute ( 'select jsonschema_version(), jsonschema()' ). fetchone ()
자세한 내용은 Python에서 sqlite-jsonschema
사용을 참조하세요.
Node.js 개발자의 경우 sqlite-jsonschema
NPM 패키지를 사용하세요.
npm install sqlite-jsonschema
그런 다음 sqlite-jsonschema
확장을 better-sqlite3
또는 node-sqlite3
연결에 로드할 수 있습니다.
import Database from "better-sqlite3" ;
import * as sqlite_jsonschema from "sqlite-jsonschema" ;
const db = new Database ( ":memory:" ) ;
db . loadExtension ( sqlite_jsonschema . getLoadablePath ( ) ) ;
const version = db . prepare ( "select jsonschema_version()" ) . pluck ( ) . get ( ) ;
console . log ( version ) ; // "v0.2.0"
자세한 내용은 Node.js와 함께 sqlite-jsonschema
사용을 참조하세요.
Deno 개발자의 경우 x/sqlite3
과 함께 x/sqlite_jsonschema Deno 모듈을 사용하세요.
import { Database } from "https://deno.land/x/[email protected]/mod.ts" ;
import * as sqlite_jsonschema from "https://deno.land/x/sqlite_jsonschema/mod.ts" ;
const db = new Database ( ":memory:" ) ;
db . enableLoadExtension = true ;
db . loadExtension ( sqlite_jsonschema . getLoadablePath ( ) ) ;
const [ version ] = db
. prepare ( "select jsonschema_version()" )
. value < [ string ] > ( ) ! ;
console . log ( version ) ;
자세한 내용은 Deno와 함께 sqlite-jsonschema
사용을 참조하세요.
Datasette의 경우 datasette-sqlite-jsonschema
플러그인을 사용하여 Datasette 인스턴스에 sqlite-jsonschema
함수를 포함합니다.
datasette install datasette-sqlite-jsonschema
자세한 내용은 Datasette와 함께 sqlite-jsonschema
사용을 참조하세요.
sqlite3
CLI sqlite3
CLI의 경우 릴리스 페이지에서 사전 컴파일된 확장을 다운로드하거나 직접 빌드하세요. 그런 다음 .load
dot 명령을 사용하십시오.
.load . / jsonschema0
select jsonschema_version();
' v0.2.1 '
위에 나열된 것과 다른 방식으로 sqlite-jsonschema
사용하는 경우 릴리스 페이지에서 사전 컴파일된 확장을 다운로드하여 환경에 로드합니다. 릴리스에서 jsonschema0.dylib
(MacOS용), jsonschema0.so
(Linux) 또는 jsonschema0.dll
(Windows) 파일을 다운로드하여 SQLite 환경에 로드합니다.
참고: 파일 이름(
jsonschema0.dylib
/jsonschema0.so
/jsonschema0.dll
)의0
은sqlite-jsonschema
의 주요 버전을 나타냅니다. 현재sqlite-jsonschema
는 v1 이전 버전이므로 향후 버전에서는 획기적인 변경이 예상됩니다.
사용 중인 SQLite 클라이언트 라이브러리에 "loadExtension" 또는 "load_extension"이라는 메서드가 있을 가능성이 있습니다. 또는 최후의 수단으로 load_extension()
SQL 함수를 사용하십시오.
Rust, make, C 컴파일러가 설치되어 있는지 확인하세요. 그런 다음 이 저장소를 git clone
하고 make loadable-release
실행하세요.
git clone https://github.com/asg017/sqlite-jsonschema.git
cd sqlite-jsonschema
make loadable-release
완료되면 운영 체제에 따라 컴파일된 확장이 dist/release/
아래에 jsonschema0.so
, jsonschema0.dylib
또는 jsonschema0.dll
로 표시됩니다.
모든 sqlite-jsonschema
SQL 함수에 대한 전체 API 참조를 확인하세요.
나(Alex ?)는 이 프로젝트와 다른 많은 오픈 소스 프로젝트에 많은 시간과 에너지를 쏟았습니다. 귀하의 회사나 조직이 이 라이브러리를 사용한다면(또는 관대하다고 느끼신다면) 제 작업을 지원해 주시거나 이 프로젝트를 친구와 공유해 주세요!
sqlite-xsv
, CSV 작업을 위한 SQLite 확장sqlite-http
, HTTP 요청을 위한 SQLite 확장sqlite-loadable-rs
, Rust에서 SQLite 확장을 작성하기 위한 프레임워크