Sqlalchemyを使用してSQLiteでJSONタイプの列を作成することは可能ですか?私はもう試した
import sqlalchemy.types as types
...
myColumn = Column(types.JSON())
そして
from sqlalchemy import JSON
...
mycolumn = Column(JSON)
両方ともエラーメッセージを受け取ります:
コンパイラはタイプの要素をレンダリングできません
Sqlalchemyに解決策があるのか、それとも代わりにSQLに変更する必要があるのか疑問に思います。前もって感謝します。
[アップデート] SQLiteバージョン3.16.0
JSONはバージョン3.9までSQLiteに追加されませんでした。 SQLiteをアップグレードするか、jsonを文字列に変換して保存し、引き出したときにjsonオブジェクトに変換し直す必要があります。
私の解決策は次のとおりです。
import json
from sqlalchemy import TypeDecorator, types
class Json(TypeDecorator):
@property
def python_type(self):
return object
impl = types.String
def process_bind_param(self, value, dialect):
return json.dumps(value)
def process_literal_param(self, value, dialect):
return value
def process_result_value(self, value, dialect):
try:
return json.loads(value)
except (ValueError, TypeError):
return None
...
myColumn = Column("name", Json)
詳細情報: TypeDecorator
SQLAlchemy 1. には SQLite JSON拡張 のサポートが含まれるため、アップグレードすることを忘れないでください。
pip install --user -U --pre SQLAlchemy
方言固有のタイプ sqlite.JSON
基本タイプを介して使用可能なJSONメンバーアクセスを実装します types.JSON
同様に。