python - 如何使用 SQLAlchemy 创建带有 JSON 列的 SQLite 表?

标签 python json sqlite sqlalchemy

根据 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 有一个 JSON extension具有一些用于处理 JSON 数据的函数,但没有专用的 JSON 类型。

关于python - 如何使用 SQLAlchemy 创建带有 JSON 列的 SQLite 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352179/

相关文章:

java - 如何摆脱错误: JSONArray[0] is not a JSONObject

python - Matplotlib 单独改变插入元素的样式

python - 属性错误: module 'selenium.webdriver.common.by' has no attribute 'XPATH' using Selenium Python

java - 如何从 JAVA 将 JSON 文件发送到 Splunk Enterprise?

c# - C# 中的 Google Geocoding Json 解析问题

python - "Incorrect number of bindings supplied"cPython 3.5 SQLite3 VS15

c# - 错误数据库锁定了SQLite C#

python - 展平列表中的嵌套字典

python - flatMap 函数 : rdd. flatMap(lambda x : map(lambda e: (x[0], e), x[1])) 中 lambda 函数的解释?

sql - SQLite中Where子句中有多个条件时如何使用 "Or"语句?