Неверный тип данных sqlite3
при вводе данных через телеграмм бот в столбец с типом INTEGER пролетает текст
def setup(self):
tblincome = "CREATE TABLE IF NOT EXISTS income (id INTEGER PRIMARY KEY, date TIMESTAMP, category TEXT, price INTEGER)"
tbloutcome = "CREATE TABLE IF NOT EXISTS outcome (id INTEGER PRIMARY KEY, date TIMESTAMP , category TEXT, price INTEGER)"
self.conn.execute(tblincome)
self.conn.execute(tbloutcome)
self.conn.commit()
Вот сам код для добавления записи
@bot.message_handler(content_types=['text'])
def sigarette_usage(message):
try:
today = date.today().strftime("%d.%m.%Y")
price = message.text
text_message = f'На {today} в таблицу расходов добавлена запись: тип "Сигареты", сумма {price} грн'
bot.send_message(message.chat.id, text_message)
db.add_item_outcome(today, 'Сигареты', price)
Ответы (2 шт):
Автор решения: Farodin
→ Ссылка
В Sqlite3 тип столбца не определяет тип хранимого значения в этом поле записи, то есть в любой столбец можно занести любое значение. Допустим, мы объявили столбец как «A INTEGER».
SQlite позволяет занести в этот столбец значения любого типа (999, «abc», «123», 678.525).
Если вставляемое значение — не целое, то SQlite пытается привести его к целому.
Т.е. строка «123» превратится в целое 123, а остальные значения запишутся «как есть».
Автор решения: Alexander A.XO
→ Ссылка
Я не очень понял суть вопроса, но может быть так:
try:
price = int(message.text)
except:
print("Видимо это не число...")
