Является ли база данных sqlalchemy-sqlite (01/2018) напрямую совместимой с объектами JSON? - PullRequest
0 голосов
/ 17 января 2019

В настоящее время я пытаюсь создать базу данных, в которой есть столбец для объекта JSON:

import sqlalchemy as sql
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.types import JSON

# Creating the Base Object for the tables.
Base = declarative_base()

class Observations(Base):
    # Declaring the tablename.
    __tablename__='observations'

    # Defining the PK column.
    OBS_id=sql.Column(sql.Integer, primary_key=True)

    # Defining a FK column to stabilishes the connection between this table
    # and the ActiveRegion table.
    ar_id=sql.Column(sql.Integer, sql.ForeignKey(ActiveRegion.AR_id))

    # Creating a column to store the sharp metadata as a json object.
    hmi_meta_data = sql.Column('hmimetadata', JSON, nullable=False)

Однако, когда я запускаю код для построения базы данных, я получаю CompileError, который говорит:

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

Я нашел уже на SO некоторые обходные пути для реализации столбца с объектом JSON, но так как этот вопрос был задан некоторое время назад, мне было интересно, есть ли встроенная поддержка, которая отклоняет потребности таких реализаций.

В соответствии с типами sqlalchemy документация Типы JSON должны работать с бэкэндами SQL, которые имеют фактический тип JSON, который включает SQLite начиная с версии 3.9. Я проверял свою версию 3.26, и это последняя версия (sqlite release website ). Тогда это будет важной вехой в будущем выпуске sqlalchemy? Или я что-то еще не рассматриваю?

Спасибо.

1 Ответ

0 голосов
/ 21 января 2019

Как указано в комментарии, sqlalchemy поддерживает JSON в версии 1.3, которую можно загрузить здесь и в настоящее время это бета-версия.Документация для новой версии уже доступна , а также changelog с версии 1.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...