我有一个包含多个(~15)列的数据库表。
我要求在给定主键的行中,以列的组合方式更新数据。
EG。
Update Col1,Col2,Col3 where PK is something
Update Col4 where PK is something
Update Col5,Col7,Col9,Col10 where PK is something
Update Col5,Col10 where PK is something
我使用Python并编写了原始查询来处理这种情况。我编写了单独的函数来管理每个需求。它们看起来像这样:
requirement1( Col5,val1,Col7,val2,Col9,val3,Col10,val4 )
{
Update TABLE SET (Col5,Col7,Col9,Col10) VALUES (val1,val2,val3,val4)
}
requirement2( Col5,val1,Col10,val2 )
{
Update TABLE SET (Col5,Col10) VALUES (val1,val2)
}
等
但此类案件的数量已增加到太多。有没有一个好的设计来处理这个?
类似于一般功能:
UpdateTableValue(ColumnName1,ColumnValue1,ColumnName2,ColumnValue2, and so on )
{
Update TABLE SET (ColumnName1,ColumnName2.. ) VALUES (ColumnValue1,ColumnValue2 .. )
}
然后用户可以致电:
UpdateTableValue(Col5,val1,Col7,val2,Col9,val3,Col10,val4)
UpdateTableValue(Col7,val,Col3,val2)
P.S。我不是要求一个好的DB设计来处理这个(所以没有OR映射等)。我想从查询包装器的角度理解一个可以处理这个问题的好设计。
答案 0 :(得分:2)
如下:
def update_table_value(*args):
sql = "Update TABLE SET ({}) VALUES ({}) "
sql.format(",".join([args[0::2]]),
",".join([args[1::2]]))
return sql
请注意: