Путь к базе данных должен быть аргументом вашего скрипта, а не жестко закодированным. Он должен предоставляться вашему классу каждый раз, когда создается экземпляр класса, а НЕ при его создании. Однако не очевидно, что это является причиной вашей проблемы, но не совсем так:
Ваш заголовок указывает, что вы ничего не можете записать в свою базу данных, но тело вопроса подразумевает, что что-то "ломается", когда вы добавляете c.execute
- что правильно? Каковы симптомы, когда он «ломается»?
Ваша попытка \ yadda \ кроме \ прохода молча игнорирует все возможные исключения - не делайте этого! Удалите попытку \ кроме \ прохода, оставив только yadda, ответьте на вышеуказанные вопросы и дайте нам известен результат.
ОБНОВЛЕНИЕ: Ваш оператор c.execute () шокирует. Делаем его разборчивым без прокрутки, это эквивалентно следующему:
(
c.execute("""insert into feed_post values (%r,'%s','%s',%d)""")
%
(status.id, status.text, status.author.screen_name, status.created_at)
)
Другими словами, у вас есть правильная скобка, которая неуместна. Результат синтаксически действителен, но обязательно вызовет исключение во время выполнения.
Хуже того: вы настраиваете себя для атаки SQL-инъекцией. Используйте параметры вместо форматирования строки:
sql = "insert into feed_post values (?,?,?,?)"
params = (status.id, status.text, status.author.screen_name, status.created_at)
c.execute(sql, params)
Преимуществом этого подхода является то, что он должен работать намного быстрее, так как движку не нужно будет анализировать (или перегружать кэш) типично разные операторы SQL для каждой записанной строки.