Я смог решить это сам, не внося особых изменений в мой код.Мне пришлось решить еще одну проблему с моим кодом, где несколько значений в файле CSV, где нулевые значения, но преобразование в CSV заставило его выглядеть так, как будто это пустые строки.Используя pandas, я смог установить все нулевые значения на «None», а затем очистить каждую строку перед вставкой в базу данных:
with open(csv_file, 'rb') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
next(reader)
for row in reader:
clean_row = []
for x in row:
if x == "None":
clean_row.append(None)
else:
clean_row.append(x)
cur.execute(
"INSERT INTO table (foo1, foo2, foo3, foo4) VALUES (%s, %s, %s, %s); ",
"INSERT INTO another_table (foo1, foo2) VALUES (%s, %s),
clean_row
)
conn.commit()
Значения из csv теперь помещаются в массив, который яможно использовать в моем запросе для запроса таблицы для его идентификатора, например:
with open(csv_file, 'rb') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
next(reader)
for row in reader:
clean_row = []
for x in row:
if x == "None":
clean_row.append(None)
else:
clean_row.append(x)
cur.execute(
"INSERT INTO table (foo1, foo2, foo3, foo4) VALUES (%s, %s, %s, %s); ",
"INSERT INTO another_table (foo1, foo2, id) VALUES (%s, %s, SELECT id FROM table WHERE "
"foo1 = '" + clean_row[0] + "' AND foo2 = '" + clean_row[1] + "')),
clean_row
)
conn.commit()
Это позволит получить идентификатор и поместить его в another_table, и это можно сделать, если у вас есть уникальные значения в таблице.