Python 如何编写mysql json#u contains函数';s ORM查询中第一个带路径的参数
我正在Python 如何编写mysql json#u contains函数';s ORM查询中第一个带路径的参数,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我正在sqlalchemy中编写一个查询,原始sql是 select * from my_table where JSON_CONTAINS( info->'$.user[*].id', '["bob", "tom"]','$'); 现在我不知道如何用ORM格式编写它 我试过这个 session.query(my_table).filter(func.json_contains(my_table.info["user"]["*"]["id"],'["bob", "tom"]','$'))
sqlalchemy
中编写一个查询,原始sql是
select * from my_table where JSON_CONTAINS( info->'$.user[*].id', '["bob", "tom"]','$');
现在我不知道如何用ORM
格式编写它
我试过这个
session.query(my_table).filter(func.json_contains(my_table.info["user"]["*"]["id"],'["bob", "tom"]','$'))
但是不起作用您还需要在此处翻译
->
运算符。从:
当与两个参数一起使用时,->
运算符用作JSON_EXTRACT()
函数的别名,左侧为列标识符,右侧为根据JSON文档(列值)计算的JSON路径
SQLAlchemy 1.3及更高版本通过使用项目订阅,本机支持JSON\u EXTRACT()
,因此columnname[expression]
。您需要将整个表达式作为单个字符串传递到此处的右侧:
session.query(my_table).filter(
func.json_contains(
my_table.info["$user.*.id"],
'["bob", "tom"]',
'$'
)
)
然后将
my_table.info[“$user.*.id”]
Python表达式编译为JSON_EXTRACT(info,“$user.*.id”)
,这相当于info->“$user.*.id”
注意,但不起作用并不是一个好的问题描述。请告诉我们应该发生什么,并给我们您得到的输出(比如来自MySQL的错误消息)。一些样本数据和预期输出将是最好的。非常感谢!json_extract函数可以工作,但它应该是json_extract(info,“$.user[*].id”)columnname[表达式]将与“$”匹配。“%s”“%s”表达式将不起作用。很高兴能提供帮助!如果您觉得它对您有用,请随时使用。:-)