Я анализирую свои xml-файлы и сохраняю их в словарь списка, где я вставлю их в таблицу на posgres с помощью psycopg2.Однако не все строки вставляются в таблицы (он вставляется только в наименьшее количество значений в списке).Вот фрагмент словаря списка:
dict_songs = {'title' : ['Need You Now', 'GTFO'...], 'format': ['MP4', 'MP3'...], 'type' : ['Country Pop', 'R&B Pop'..], 'year': [2010,2018..]}
dict_movie = {'title' : ['Searching', 'Sidewalk of New York'...], 'format': ['DVD', 'Blue Ray'...], 'type' : ['Thriller', 'Romcom'..], 'year': [2018..]
Когда я посчитал длину каждого списка в словаре, оказалось, что не все списки имеют одинаковую длину, например:
for key, value in dict_songs.items():
#print value
print(key, len([item for item in value if item]))
# The result is:
title 300000
format 189700
type 227294
year 227094
Заголовок будет основным ключом в таблице песен.Когда я вставляю этот словарь в postgres, он показывает только 189700 записей, а не 300000. Я хочу, чтобы он был 300000, и в качестве значений null (нет) укажите Null.То же самое касается dict_movie
. Этот код я использую для вставки списка диктов в таблицу:
keys = ['title', 'format', 'type','year']
insert_statement = 'insert into song_table (%s) values %s'
for t in zip(*(dict_songs[key] for key in keys)):
cur.execute(insert_statement3, (AsIs(','.join(keys)),t))
myConnection.commit()
Есть идеи, почему или как это сделать?Спасибо!