Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写mysql json#u contains函数';s ORM查询中第一个带路径的参数_Python_Mysql_Sqlalchemy - Fatal编程技术网

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”表达式将不起作用。很高兴能提供帮助!如果您觉得它对您有用,请随时使用。:-)