【问题标题】:How to create a SQLite Table with a JSON column using SQLAlchemy?如何使用 SQLAlchemy 创建带有 JSON 列的 SQLite 表?
【发布时间】:2018-12-23 10:22:01
【问题描述】:

根据this answer,SQLite 从 3.9 版本开始支持 JSON 数据。我将 3.24 版与 SQLALchemy (1.2.8) 和 Python 3.6 结合使用,但我无法创建任何包含 JSON 列的表。

我错过了什么或做错了什么?下面给出了一个最小(非)工作示例:

import sqlalchemy as sa
import os
import tempfile

metadata = sa.MetaData()

foo = sa.Table(
    'foo',
    metadata,
    sa.Column('bar', sa.JSON)
)

tmp_dir = tempfile.mkdtemp()
dbname = os.path.join(tmp_dir, 'foo.db')

engine = sa.create_engine('sqlite:////' + dbname)

metadata.bind = engine

metadata.create_all()

这失败并给出以下错误:

sqlalchemy.exc.CompileError: (in table 'foo', column 'bar'): Compiler <sqlalchemy.dialects.sqlite.base.SQLiteTypeCompiler object at 0x7f1eae1dab70> can't render element of type <class 'sqlalchemy.sql.sqltypes.JSON'>

谢谢!

【问题讨论】:

  • SQLite 方言的基本 JSON1 支持应该在 1.3 中出现。您的示例将按原样工作。

标签: python json sqlite sqlalchemy


【解决方案1】:

使用 TEXT 列。 Sqlite 有一个JSON extension,其中包含一些处理 JSON 数据的函数,但没有专用的 JSON 类型。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 2020-12-21
    • 2016-06-06
    • 2014-10-07
    • 2017-02-27
    • 2018-11-26
    • 2013-02-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多