2017-03-07 46 views
0

插入时了解的情况我有这样的代码:麻烦与PostgreSQL中

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)) 

我不知道我understad的值是如何插入到列timeo

代码0 if not temp_timeo else temp_timeo是可以理解的但那么我们有另一个条件if producttypeid==1 else 0,我不知道它是如何覆盖以前的值?

我从来没有见过这样的SQL查询编码之前的。

Specificly在这个例子:

temp_warehouseid = 1 
temp_timeo = 2 
producttypeid =5 

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

+0

plpy.execute时是PL/Python的 - https://www.postgresql.org/docs/current/static/plpython-database.html –

回答

1

你是问有关蟒蛇结构。

tmp = VALUE1 if CONDITION else VALUE2 

如果CONDITION为真,则VALUE1与tmp对齐。如果它是错误的,则VALUE2被赋值。

在您的查询的情况下,使用这条巨蟒结构两次。

timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3 

如果CONDITION1为真,则选择value1。如果为假,则评估第二个“声明”VALUE2 if CONDITION2 else VALUE3

所以,作为temp_timeo = 2,条件not temp_timeo是假的。 而作为producttypeid = 5,条件producttypeid==1是假的。 因此选择上一个值0