在Python中合并两个列表生成SQL字符串

1 投票
1 回答
532 浏览
提问于 2025-04-18 06:17

我现在正在用Python把两个列表合并在一起,以生成一个字符串,准备输入到数据库中,代码如下:

newDataString = ', '.join("%s=\'%s\'" % t for t in zip(tableColumns,data))

这里的tableColumns是一个列的列表,而data是与这些列相关的数据列表。我把它们合并在一起是为了进行更新。

一切都运行得很好,除了当数据列表中的某个值是None的情况。

cur.execute("UPDATE "+table+" SET "+str(newDataString)+" FROM "+tempTable+" WHERE "+generatePrimaryKeyMatches(primaryKey, table))
psycopg2.DataError: invalid input syntax for type date: "None"
LINE 1: ...ION RESEARCH & REP', suff='None', hon='None', dob='None', na...

我想我需要在这里加一个if语句,检查data中的每个值,在合并之前,如果data是None的话,应该以不同的方式处理(也就是说,不加\'),但我就是想不出来该怎么做。

非常感谢任何帮助。

1 个回答

1

我觉得如果把这个分成两个步骤来做会更简单:

newDataList = []
for t in zip(tableColumns, data):
    if t[1] is not None:
        newDataList.append("{0}=\'{1}\'".format(*t))
    else:
        # ...deal with None
newDataString = ", ".join(newDataList)

注意,我把老式的 % 格式换成了 str.format 方法。

撰写回答