В настоящее время я соединяю два списка вместе в 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, но я не могу для жизни меня фигурой это из.
Любая помощь очень ценится.
Я думаю, это было бы легче, если бы вы разделили его на два шага:
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
.
data='18221', datadesc='MANUFACTURE OF OTHER MEN'S OUTERWEA...
, есть идеи, как я мог бы включить str.replace в эту функцию, чтобы удалить все апострофы из строк данных перед записью в newDataString? Лучше всего, Джо.