Нужна помощь на Python sqlite? - PullRequest
0 голосов
/ 04 марта 2010

1.У меня есть список данных и база данных sqlite, заполненная прошлыми данными, а также некоторые статистические данные по каждой информации Я должен сделать следующие операции с ними.

  • Проверьте, присутствует ли каждый элемент в списке в БД. если нет, то соберите некоторую статистику по новому предмету и добавьте ее в БД.
  • Проверьте, есть ли каждый элемент в БД в списке. если нет, удалите его из БД.

Я не могу просто создать новую базу данных, потому что у меня есть другая обработка для новых элементов и отсутствующих элементов.
Короче говоря, мне нужно обновить базу данных новыми данными в списке.
Какой лучший способ сделать это?

2. Мне пришлось использовать sqlite с потоками Python. Поэтому я установил блокировку для каждой операции чтения и записи в БД. Теперь это замедлило доступ к БД.
Каковы затраты на операцию блокировки потока? И есть ли другой способ использовать БД с несколькими потоками?
Может кто-нибудь помочь мне в этом? Я использую python3.1.

1 Ответ

0 голосов
/ 04 марта 2010
  1. Не нужно ничего проверять, просто используйте INSERT OR IGNORE в первом случае (просто убедитесь, что у вас есть соответствующие уникальные поля, чтобы INSERT не создавал дубликаты) и DELETE FROM tbl, ГДЕ данные НЕ ВХОДЯТ (первый элемент ',' второй элемент ',' третий элемент ') во втором случае.

  2. Как сказано в официальном FAQ по SQLite: «Потоки - это зло. Избегайте их». Насколько я помню всегда были проблемы с потоками + sqlite. Дело не в том, что sqlite вообще не работает с потоками, просто не стоит сильно полагаться на эту функцию. Вы также можете заставить один поток работать с базой данных и сначала передавать все запросы к ней, но эффективность такого подхода сильно зависит от стиля использования базы данных в вашей программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...