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
Connection オブジェクトにロードできます。
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
詳細については、 「データセットでの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 環境にロードします。
注:ファイル名の
0
(jsonschema0.dylib
/jsonschema0.so
/jsonschema0.dll
) は、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
完了すると、コンパイルされた拡張機能は、オペレーティング システムに応じて、 jsonschema0.so
、 jsonschema0.dylib
、またはjsonschema0.dll
としてdist/release/
の下に表示されます。
すべてのsqlite-jsonschema
SQL 関数については、完全な API リファレンスを参照してください。
私 (Alex ?) は、このプロジェクトや他の多くのオープンソース プロジェクトに多くの時間とエネルギーを費やしました。あなたの会社や組織がこのライブラリを使用している (または寛大だと感じている) 場合は、私の仕事をサポートすることを検討するか、このプロジェクトを友人と共有してください。
sqlite-xsv
、CSV を操作するための SQLite 拡張機能sqlite-http
、HTTPリクエストを行うためのSQLite拡張機能sqlite-loadable-rs
、Rust で SQLite 拡張機能を作成するためのフレームワーク