在 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"]',)]
我正在尝试使用 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"]',)]