在Python中连接SQL字符串的两个列表

在Python中连接SQL字符串的两个列表,python,sql,postgresql,psycopg2,Python,Sql,Postgresql,Psycopg2,我目前正在python中将两个列表连接在一起,以生成一个字符串,用于使用以下代码输入数据库: newDataString = ', '.join("%s=\'%s\'" % t for t in zip(tableColumns,data)) 其中tableColumns是列的列表,data是与列相关的数据的列表。我将这些连接在一起执行更新 除了数据列表中的值=无的情况外,所有这些都可以正常工作 cur.execute("UPDATE "+table+" SET "+str(newDataSt

我目前正在python中将两个列表连接在一起,以生成一个字符串,用于使用以下代码输入数据库:

newDataString = ', '.join("%s=\'%s\'" % t for t in zip(tableColumns,data))
其中tableColumns是列的列表,data是与列相关的数据的列表。我将这些连接在一起执行更新

除了数据列表中的值=无的情况外,所有这些都可以正常工作

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=None,则应该对其进行不同的处理(即no \'),但我一生都无法理解它


非常感谢您的帮助。

如果您将其分为两个步骤,我想这会更容易:

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

如果它不是您想要返回的内容Hi Sundar我想要返回字符串,就像上面的情况一样,但周围没有撇号。e、 g:tableColumns=['name','dob']data=['roger',None]将返回:name='roger',dob=None希望这能澄清问题。嗨,约翰,这看起来很棒。我做了一个快速测试,看起来这可能解决问题。我现在正在做一个完整的测试,所以祈祷这是我需要的最后一块拼图。。。如果是的话。。。我欠你一杯啤酒。一大杯冰镇啤酒。我会随时通知你的……嗨,约翰,非常感谢你,看来问题已经解决了。另一个查询(如果可以的话!)我现在在字符串中有撇号的问题,这些字符串会提前关闭数据,例如…
data='18221',datadesc='manufactureofotherman'southerman'S OUTERWEA…
,在写入newDataString之前,您知道如何将str.replace包含到该功能中以删除数据字符串中的所有撇号吗?最好的,Joe。你可以对col,data进行
压缩(…)
然后使用
格式(col,data.replace(“'”,“”))
而不是简单地
数据。