如何使用SQLAlchemy创建一个带有JSON列的SQLite表?

3
根据这个答案,自SQLite 3.9版本起支持JSON数据。我正在使用版本号为3.24的SQLite与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: (在表 'foo' 的列 'bar' 中):编译器 无法呈现类型为的元素。
谢谢!

2
SQLite方言的基本JSON1支持将在1.3版本中推出。您的示例将与其一起正常工作。 - Ilja Everilä
1个回答

5
使用 TEXT 列。 Sqlite 有一个 JSON 扩展,提供了一些用于处理 JSON 数据的函数,但没有专门的 JSON 类型。请参考JSON extension

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接