【发布时间】:2014-07-05 10:44:37
【问题描述】:
我有一个问题 - 我为 postgresql 方言使用自定义 JSON 类型。 我需要同时使用 postgres/sqlite(用于生产的 postgres,用于单元测试的 sqlite 作为内存测试数据库)。
from sqlalchemy.dialects.postgresql.json import JSON
class Entity(ModelBase, SAModel):
__tablename__ = 'entities'
id = Column(pkey_type, primary_key=True, nullable=False)
priority = Column(Integer, nullable=False)
tags = Column(JSON, nullable=False, default={})
不幸的是 sqlite 不能直接使用 JSON。我需要像“SmartJSONType”这样的东西,它将根据当前的 sqlalchemy 方言切换行为(使用 JSON 作为 SQLite 中的原生 Postgres JSON 数据类型和字符串)。
谁能帮我解决这个问题?
【问题讨论】:
-
那么您是否需要帮助来模拟
JSON方言的行为,仅使用String列和 SQLite,或者在两种实现之间进行切换,或两者兼而有之? -
你确定要那个吗?在 postgresql 中使用 json 的主要好处是它为在查询中使用 json 值提供了丰富的运算符集。你不会在 sqlite 中得到任何这些;只是不相关且不太有用的字符串运算符(反过来,在 postgresql JSON 类型上不可用)。如果您的唯一目的是存储 json 数据,请在任何地方使用
String。 -
哦,我知道这是一个非常古老的问题,但是因为我遇到它试图找到答案,所以我想我应该回来并回答它的完整性:)
标签: python json sqlite postgresql sqlalchemy