123... 发表于 2022-8-31 18:00:14

flask 如果前端传值为空 怎么不作筛选

flask 执行原生sql 如果怎么做到如果值为空就不执行这个筛选条件
例如 mysql 的
set @a = ;
if(@a is null , 0=0,find_in_set (a,@a))

flask 的原生语句该怎么写?

如果这样写的话 excel = db.session.execute(f"select id from td_kids_writeoff_record where if('{store}' is null , 0=0, store_id in '{store}')").all()

如果换一种写法excel = db.session.execute(f"select id from td_kids_writeoff_record where (store_id in '{store}' or '{store}' = '')").all()

都会变成类似这个样子
select id from td_kids_writeoff_record where if('None' is null , 0=0, store_id in 'None')
不知道为什么不会跳转到 0=0 直接变成 store_id in('none') 了 也就意味着什么都筛不出来
如果{}外面不加引号就会报错 因为我要写的原生sql 关联三个查询语句,用orm太麻烦了
也尝试过把set @store = ;单独在前面执行,但是不行,不论是加到原生sql里面,还是在前面执行

不想写拼接感觉好麻烦,大佬能支个招吗

suchocolate 发表于 2022-9-2 00:27:17

store没拿到东西

123... 发表于 2022-9-2 10:06:06

suchocolate 发表于 2022-9-2 00:27
store没拿到东西

大佬我知道哦,但是应该改成啥样啊。。。就是想弄成,如果传值为空,就不作过滤条件

suchocolate 发表于 2022-9-2 15:02:22

123... 发表于 2022-9-2 10:06
大佬我知道哦,但是应该改成啥样啊。。。就是想弄成,如果传值为空,就不作过滤条件

那得在之前对store做个if判断,值不同,写的字符串不同。
这个任务不能单纯交给f-string.

阿奇_o 发表于 2022-9-3 19:13:20

应该在前端来实现这个判断,即
前端js代码 先判断一下是否为空,如果空,就不发起查询。
如果有输入内容,就正常发起查询(不管你用原生SQL还是ORM,只是写法上的不同,具体参考官方的例子)

123... 发表于 2022-9-5 09:16:41

阿奇_o 发表于 2022-9-3 19:13
应该在前端来实现这个判断,即
前端js代码 先判断一下是否为空,如果空,就不发起查询。
如果有输入内容 ...

大佬给个官方例子网址,谢谢,找两天没找到

阿奇_o 发表于 2022-9-5 11:41:06

123... 发表于 2022-9-5 09:16
大佬给个官方例子网址,谢谢,找两天没找到

不会“科学上网”? 谷歌不能,必应 总可以吧。。
搜索关键词不会?英文不会?那就别学编程了。。
key words e.g. : flask sqlalchemy tutorial

123... 发表于 2022-9-5 17:43:27

阿奇_o 发表于 2022-9-5 11:41
不会“科学上网”? 谷歌不能,必应 总可以吧。。
搜索关键词不会?英文不会?那就别学编程了。。
key ...

感谢大佬,我去flaks_sqlalchemy 找了的 也去flaks 找了的 没看到。。。我去看看
页: [1]
查看完整版本: flask 如果前端传值为空 怎么不作筛选