在插入后插入后的条件方面麻烦



我有此代码:

temp3=plpy.execute("""insert into tabl(warehouseid, timeo)  
values(%s,%s) returning tablid"""% 
(temp_warehouseid, 0 if not temp_timeo else temp_timeo  if producttypeid==1 else 0))

我不确定如何将值插入到列timeo

的方式

代码0 if not temp_timeo else temp_timeo是可以理解的,但是我们还有另一个条件if producttypeid==1 else 0,我不确定它是如何覆盖上一个值的?

我从未在SQL查询中看到过这种编码。

在此示例中尤其是:

temp_warehouseid = 1
temp_timeo = 2
producttypeid =5

这将行插入值(1,0)我认为这是因为producttypeid=5?但是我不明白它是如何工作的。

您正在询问python构造。

tmp = VALUE1 if CONDITION else VALUE2

如果条件是正确的,则Value1被acign至TMP。如果是错误的,则值为value2。

在您的查询中使用了两次此Python构造。

timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3

如果条件1为真,则选择Value1。如果是错误的,则评估第二个"语句" VALUE2 if CONDITION2 else VALUE3

因此,作为temp_timeo = 2,条件not temp_timeo是错误的。作为producttypeid = 5,条件producttypeid==1是错误的。因此,选择了最后一个值0

最新更新