我有此代码:
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
。