使用pyodbc访问数据库UPSERT

时间:2017-05-10 17:30:13

标签: python ms-access pyodbc upsert

我正在使用pyodbc来更新Access数据库。

我需要UPSERT的功能。

ON DUPLICATE KEY UPDATE在Access SQL中不存在,REPLACE不是一个选项,因为我想保留其他字段。

有很多建议如何解决,所以这是 我把它放在一起的解决方案:

for table_name in data_source:
    table = data_source[table_name]

    for y in table:
        if table_name == "whatever":
            SQL_UPDATE = "UPDATE {} set [Part Name] = '{}', [value] = {}, [code] = {}, [tolerance] = {} WHERE [Unique Part Number]='{}'".\
                format(table_name,y['PartName'],y['Value'],y['keycode'],y['Tolerance'], y['PartNum'])
            SQL_INSERT = "INSERT INTO {} ([Part Name],[Unique Part Number], [value], [code], [tolerance]) VALUES ('{}','{}','{}',{},{},{});".\
                format(table_name,y['PartName'],y['PartNum'],y['Value'],y['keycode'],y['Tolerance'])
        elsif ....
                9 more tables....

       res = cursor.execute(SQL_UPDATE)
       if res.rowcount == 0:
         cursor.execute(SQL_INSERT)

我必须说,我不是Python专家,而且我没有设法理解基本概念,也没有理解SQL的魔力,  所以我可以在这里一起谷歌。

我不喜欢上面的解决方案,因为它很难阅读并且难以维护(我必须为~10个不同的表格)。另一点是我必须使用2个查询,因为我没有设法理解并运行我发现的任何其他UPSERT方法。

有没有人建议我如何以更智能,更易于维护的方式做到这一点?

0 个答案:

没有答案