作者:偶说撒浪嘿 | 来源:互联网 | 2023-01-13 13:08
是否可以使用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
1> 小智..:
我的解决方案是:
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
2> 小智..:
直到版本3.9,JSON才被添加到SQLite.您需要升级SQLite或将json转换为字符串并保存它,同时将其拉出时将其转换回json对象.