@char906

Почему я не могу сделать запись в базу данных SQlite?

код:

def add_randcode(self, code):
        with self.connection:
            code = self.cursor.execute("SELECT * FROM `subscriptions` WHERE `code` = ?", (code, )).fetchone()
            if code == None:
                code = random.randint(1000,9999)
                self.cursor.execute("INSERT INTO subscriptions VALUES(?)", code,)
            else:
                return code


SQlite выглядит так:

PRAGMA foreign_keys = 0;

CREATE TABLE sqlitestudio_temp_table AS SELECT *
                                          FROM subscriptions;

DROP TABLE subscriptions;

CREATE TABLE subscriptions (
    id         INTEGER   PRIMARY KEY AUTOINCREMENT,
    user_id    INT (255),
    first_name TEXT,
    money      INT       DEFAULT (50),
    status     INT       DEFAULT (5),
    code       INTEGER
);

INSERT INTO subscriptions (
                              id,
                              user_id,
                              first_name,
                              money,
                              status,
                              code
                          )
                          SELECT id,
                                 user_id,
                                 first_name,
                                 money,
                                 status,
                                 code
                            FROM sqlitestudio_temp_table;

DROP TABLE sqlitestudio_temp_table;

PRAGMA foreign_keys = 1;


Вывожу как сообщение вот так вот:

r = db.add_randcode(message.from_user.id)

bot.send_message(message.chat.id, '✅ Добро пожаловать '+str(r)+')


В итоге всегда получаю ✅ Добро пожаловать и 4 рандомные цифры, которые не записываются в БД. Как сделать так чтобы эти 4 цифры записались в базу?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
xenon
@xenon
Too drunk to fsck
Упростите код, уберите все ненужные для отладки строчки (даже если они нужны в работе), чтобы четко было видно, где происходит чудо и почему. Добавьте print'ов чтобы посмотреть, как проходит код и распечатывайте переменные. Дальше, скорее всего, вы сами увидите, где у вас проблема, а если нет - то сможете ее свести до кода с 2-3 строчками.

Возможно, забыли сделать commit() ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы