Сначала я нахожу все таблицы дампа, используя...
Код: Выделить всё
tables_cur.execute("SELECT name FROM sqlite_master WHERE name LIKE 'dump_table%';")
Код: Выделить всё
source_cur.execute("SELECT * FROM " + tables_row[0] + ";")
Код: Выделить всё
target_cur.execute("INSERT INTO 'common_dump'" + source_row + ";")
Как только они появляются, Python SELECT превращает NULL в None, а затем INSERT пытается чтобы вставить значение None в INSERT. Это, естественно, вызывает ошибку в SQLite.
Можно преобразовать строку в строку и использовать строковую функцию, чтобы изменить все None на NULL. Но если дамп содержит текстовые поля, содержащие в качестве подстроки «Нет» или «Нет», то при преобразовании данные будут повреждены.
Можно явно разбить результат SELECT на поля , а затем явно присвойте их INSERT. Но тогда при любом изменении количества полей в таблицах дампа вам придется вносить еще и исправления в функцию преобразования. Причем сразу в нескольких местах.
Есть ли какое-нибудь изящное решение описанной проблемы?
Подробнее здесь: https://stackoverflow.com/questions/791 ... and-python
Мобильная версия