Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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/SQLAlchemy中的部分UUID匹配_Python_Sql_Postgresql_Sqlalchemy - Fatal编程技术网

Python/SQLAlchemy中的部分UUID匹配

Python/SQLAlchemy中的部分UUID匹配,python,sql,postgresql,sqlalchemy,Python,Sql,Postgresql,Sqlalchemy,尝试在Python/SQLAlchemy中开发一个脚本,该脚本可以获取子字符串并将其与UUID部分匹配。例如:字符串“d78d”将匹配UUID('3f522efe-d78d-4081-99a5-9aad6b5332be')。显然,您无法通过将UUID对象与字符串进行比较来筛选查询,因此我尝试了以下脚本: import sqlalchemy from sqlalchemy.sql.expression import cast my_search_value = "d78d" m

尝试在Python/SQLAlchemy中开发一个脚本,该脚本可以获取子字符串并将其与UUID部分匹配。例如:字符串“d78d”将匹配UUID('3f522efe-d78d-4081-99a5-9aad6b5332be')。显然,您无法通过将UUID对象与字符串进行比较来筛选查询,因此我尝试了以下脚本:

import sqlalchemy
from sqlalchemy.sql.expression import cast
my_search_value = "d78d"
my_query = db.session.query(People.id).filter(
      cast(People.id, sqlalchemy.String).ilike(f"%{my_search_value}%")
不幸的是,这并没有返回任何结果,即使我确信我的数据库中有一条记录包含该搜索值。但是,在调试脚本时,我可以看到SQLAlchemy如何将此查询转换为Postgresql的结果:

Select people.id
From people
Where lower(CAST(people.id as VARCHAR)) LIKE lower(:param_1)
当我复制它并将其粘贴到我的db客户机中(用“%d78d%”替换lower(:param_1)时,它会按预期执行。因此,我假设我尝试将子字符串与UUID部分匹配并没有本质上的错误,但是我在Python/SQLAlchemy中缺少了阻止脚本工作的东西


值得一提的是,我尝试了使用以下运算符:LIKE、ILIKE、MATCH……所有这些运算符的结果都相同。

尝试使用bind parameter打印SQL,如下面的答案所示。您可以看到sqlahcmemy SQL和您期望的SQL之间的差异。