Datagrip正确地执行查询,但是Python(sqlalchemy)跳过了一些where条件

2024-10-02 22:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

Python使用sqlalchemy执行SQL查询时遇到问题。你知道吗

我有几个表,其中包含有关我的项目的不同信息。一个表包含产品id、类别id和其他一些产品信息。另一个表包含了有关产品目录的所有信息。你知道吗

Categories表用于包含有关顶级类别、子类别和类别本身的所有信息(用于e-shop)。你知道吗

这是执行连接的代码的一部分:

   LEFT JOIN products AS p ON pc.product_id = p.id
   LEFT JOIN categories AS c ON p.category_id = c.id
   LEFT JOIN categories AS c_top ON c.top_parent_id = c_top.id
   LEFT JOIN categories as sub ON c.parent_id = sub.id

我试图得到一些特定的项目列表,所以我想用它们的子类别过滤掉一些项目(子id)类别id(c.id)。我是这样做的:

 AND sub.id not in (2837, 8225, 5681, 5693, 3773, 5714, 4901, 5792, 4943, 9133, 5801, 7370, 8183, 6779, 3515, 4175,9086, 4541, 3419, 5096, 82, 124, 1604, 5054, 11615, 3326, 1598, 7931, 5135, 1505, 10971, 10607,8243, 390, 10346, 3380, 7958, 8195)

假设我想在Datagrip控制台中请求子类别82中的项,但没有得到任何结果。但是,一旦我保存了这个查询并在Python中使用它,使用sqlalchemy来获得这些结果,它就会忽略条件过滤器中的一些数字,并将它们传递到我的数据帧。为什么会这样?你知道吗


Tags: 项目信息idsqlsqlalchemy产品ontop