用于修改选项卡中各种列组合的良好设计

2024-10-01 07:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个(~15)列的数据库表。你知道吗

对于给定的主键,我有一个要求,即数据在一行中以列的组合进行更新。你知道吗

例如

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)

另外,我并不是要求一个好的数据库设计来处理这个问题(所以没有或映射等)。我想从查询包装器的角度来理解一个好的设计,它可以处理这个问题。你知道吗


Tags: istableupdatewheresomethingpksetval1
1条回答
网友
1楼 · 发布于 2024-10-01 07:36:41

比如说:

def update_table_value(*args):
    sql = "Update TABLE SET ({}) VALUES ({}) "
    sql.format(",".join([args[0::2]]),
               ",".join([args[1::2]]))
return sql

请注意:

  • args获取您放入函数中的所有参数,并从中创建一个名为args的列表
  • args[0::2]选取列表中的第二个条目

相关问题 更多 >