@dmitriyprog

Не пойму, почему в базе sqlite3 не сохраняется id фото?

Смотрите, я сохраняю фото id в базе. Для проверки вывожу содержимое записи на экран(1 вывод) Все сохранено,
Дальше я добавляю следующее фото в другой столбец и снова вывожу содержимое:

Первый(13 фактический) столбец none
Второй(14 фактический) - содержит нужное значение
Вывожу еще снова содержимое столбца(на фото это не показано) - все пусто
5a5f9f2c234f1295785051.png

Код для сохранения первого, второго фото
Начало:
@bot.message_handler(content_types= ["photo"])
def verifyUser(message):
    core.make_order(message, True)

.....
def make_order(self, message, with_photo=False):
        db = DB()
        if db.get_next_step(message) == 1:
            self.bot.send_message(message.chat.id,
                                  "Введи, пожалуйста, свои фамилию, имя, отчество и отправь как обычное сообщение"
                                  " или прикрепи первую, вторую страницы паспорта")
            db.to_next_step(message)
        else:
            if with_photo or db.get_next_step(message) > 20:
                if db.get_next_step(message) < 20:
                     db.to_step(message, 20)
                self.make_order_with_photo(message)
            else:
                self.make_order_manual(message)


def make_order_with_photo(self, message):
        db = DB()
        if db.get_next_step(message) == 20:
            db.to_next_step(message)
            db.set_passphoto_one(message)
            db.set_passphoto_one(message)
            self.bot.send_message(message.chat.id, "И вторая страница")
            return
        elif db.get_next_step(message) == 21:
            db.to_next_step(message)
            db.set_passphoto_two(message)
            self.choise_number_message(message)
            return

....
class DB :

    def __init__(self):
        self.con = sqlite3.connect('users.db')
        self.cur = self.con.cursor()

........
def set_passphoto_one(self, message):
        query = "UPDATE users SET p='{im}' WHERE id={id}"
       # query = 'INSERT INTO users(id, p) VALUES('+str(message.chat.id)+', "' +  str(message.photo[1].file_id) + '") '
        print(query)
        self.cur.execute(query.format(im=str(message.photo[1].file_id), id=message.chat.id) )
        self.get_from_db(message)

    def set_passphoto_two(self, message):
        data = str(message.photo[1].file_id)
        query = "UPDATE users SET ph='{im}' WHERE id={id}"
        print(query)
        self.cur.execute(query.format(im=str(message.photo[1].file_id), id=message.chat.id))


Спасибо. PS. Знаю, что в каждом методе соединение с БД вызывать - это нехорошо, но пока не могу разобраться - вызывается ошибка
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
  • @YuriM1983
    Фрилансер - веб-программист на питоне
    Не забывайте про COMMIT.
    Заодно, так форматировать SQL запрос опасно. Используйте знаки вопроса.
    PS: Кроме того, всё это будет работать, пока не получится два одновременных запроса к базе.
    Используйте лучше SQL-сервер, например MySQL.
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы