在Python中合并两个列表生成SQL字符串
我现在正在用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
方法。