Действительно.Та же проблема здесь.Похоже, они забыли о производительности, особенно когда у вас есть удаленная БД, это проблема.
Что я тогда всегда делаю, так это пишу код на Python, используя словарь или список.Трюк, например, в словаре, чтобы установить ключ и значение для тех же данных ключа.то есть
myEmailAddressesDict = {}
myEmailList = []
for emailAddress in allEmailAddresses:
if emailAddress not in myEmailAddressesDict:
#can add
myEmailList.append(emailAddress)
myEmailAddressesDict[emailAddress] = emailAddress
mySession = sessionmaker(bind=self.engine)
try:
mySession.add_all(myEmailList)
mySession.commit()
except Exception as e:
print("Add exception: ", str(e))
mySession.close()
Это не решение проблемы, а своего рода обходной путь на данный момент.Ключевым моментом в этом решении является то, что вы на самом деле очистили (delete_all) БД или начали с нуля.В противном случае, если у вас уже есть БД, код все равно не будет работать.
Для этого нам понадобится что-то вроде параметра в SQLAlchemy, чтобы игнорировать дубликаты на add_all, или они должны предоставить merge_all.