在 SQLAlchemy 中查询 SQL 服务器 JSON

Query SQL Server JSON in SQLAlchemy

我正在尝试使用 SQLAlchemy 创建此查询:

SELECT JSON_QUERY(json_field, '$.emails') FROM table

字段看起来像:

{"emails": ["email1","email2"...]}

我有类似的东西:

session.query(func.json_query(json_field, '$.emails').all()

但看起来 json_query 不在函数中。 任何帮助将不胜感激。

it looks like json_query isn't in func

.func() 确实呈现 json_query。对于名为 [json_test] 的测试 table …

id  json_field
--  -------------------------------  
 1  {"emails": ["email1","email2"]}
 2  {"emails": ["email3","email4"]}

…这对我有用:

class JsonTest(Base):
    __tablename__ = "json_test"
    id = sa.Column(sa.Integer, primary_key=True, autoincrement=False)
    json_field = sa.Column(sa.JSON)


with sa.orm.Session(engine) as session:
    qry = session.query(sa.func.json_query(JsonTest.json_field, "$.emails"))
    """SQL emitted:
    2021-08-16 16:24:13,203 INFO sqlalchemy.engine.Engine SELECT json_query(json_test.json_field, ?) AS json_query_1 
    FROM json_test
    2021-08-16 16:24:13,203 INFO sqlalchemy.engine.Engine [generated in 0.00039s] ('$.emails',)
    """
    results = session.execute(qry).fetchall()
    print(results)
    # [('["email1","email2"]',), ('["email3","email4"]',)]