我有这段代码:
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
?但我不明白它是如何运作的。
答案 0 :(得分:1)
你问的是python结构。
tmp = VALUE1 if CONDITION else VALUE2
如果CONDITION为真,则VALUE1与tmp对齐。如果为假,则VALUE2为对齐。
如果你的查询使用了两次这个python结构。
timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3
如果CONDITION1为true,则选择value1。如果为false,则评估第二个“语句”VALUE2 if CONDITION2 else VALUE3
。
因此,作为temp_timeo = 2
,条件not temp_timeo
为false。
而producttypeid = 5
,条件producttypeid==1
为假。
因此,选择了最后一个值0
。