Append/Join psycopg2.sql.SQL 的组合对象

Append/Join Composed Objects of psycopg2.sql.SQL

我有两个变量 ab,它们包含是否 Composed([]) (Class) 或者是否填充了诸如 Composed([Composed([Composed([SQL('trunc('), Identifier('s0'), SQL(' * '), Literal(Decimal('1.000000')), SQL(', '), Literal(2), SQL(') AS '), Identifier('Test XXXX')])])]).

如何在它们之间使用分隔符(仅在需要时)连接或扩展它们并将它们分配给名为 c.

的变量

到目前为止我的失败尝试:

c = sql.SQL(', ').join(filter(sql.Composed, [a, b]))

感觉少了点小东西

编辑:

这行得通,但还可以做得更好:

sql.SQL(', ').join(
    q for q in [a, b] if q.seq
)

c = sql.SQL(', ').join([a, b]) 可以

sql.SQL(', ').join(
    q for q in [a, b] if q.seq
)

请注意,如果您使用此代码片段,因为 Composed 只有在包含列表时才会设置此 属性。