data = ""
                  
                  
                        for row in self.read(file):
                  
                  
                            counter += 1
                  
                  
                            data = data + self.parse(row, table_name, file)
                  
                  
                            if (counter % 10) == 0:
                  
                  
                                try:
                  
                  
                                    with pg().connect(self.source_db) as conn:
                  
                  
                                         conn.execute(
                  
                  
                                              f"""INSERT INTO "clients" VALUES {data} ON CONFLICT ON CONSTRAINT "unique_clients" DO NOTHING;""")
                  
                  
                                 except Exception as e:
                  
                  
                                     self.write_log(
                  
                  
                                          f"Error: {e} when parcing row: {row}", level='error')
                  
                  
                                     raise Exception
                  
                  
                                  data = ""
                  
                  
                  
                  
                  
                  Кто может подсказать в чем косяк? Значения в бд не добавляются, выводил в print(data) данные есть.
                  
                  
                
не используй f-string в запросах к БД
f строки действительно могут набедокурить если речь идет о следующих моментах: - данные которые ты отправляешь в фстринг пришли напрямую с АПИ(или тип того) - передаешь id для WHERE - Полностью запрос в f строке. ... Но важно понимать что ситуации бывают разные и если понимаешь моменты в которых может произойти факап. то F строки в запросах использовать можно:)
1. отличная идея в цикле создавать подключения к БД 2. отличная идея не делать commit 3. отличная идея делать raise Exception вместо raise 4. отличная идея использовать f-строки с какой-то дичью в запросе, вместо безопасных подстановок через ? 5. убери on conflict, может дело в нем
я бы на уровне женевской конвенции запретил f-строки для использования в SQL
2. там же обычно автокомит стоит в контенстном менеджере!?
https://peps.python.org/pep-0675/
только на этапе проверки типов
Так и нормально
в позавчерашней бетке уже реализовано
Обсуждают сегодня