Как загрузить данные в базу sqlite что вводит пользователь в тг боте aiogram?
Начну с того,что я только начинаю путь в python, так что не судите строго если туплю.
пишу телеграм бот и хочу сделать загрузку данных в базу sqlite с сообщения что вводит пользователь.
В базе только один столбец со значенинм "b_1"
cursor.execute("""CREATE TABLE IF NOT EXISTS baza(
b_1 TEXT
)
""")
ПРОБЛЕМА в том что записывает только 1 слово в базу , а если больше ,то ошибка.
Как сделать чтобы каждая строка из сообщения пользователя записывалась в отдельную строку столбца в базе?
вот часть кода:
@dp.message_handler(text="Загрузить")
async def handle_a(message: Message):
await message.reply("Загрузить данные ", reply_markup=types.ReplyKeyboardRemove())
await InputUserData.accs.set()
@dp.message_handler(state=InputUserData.accs, content_types=types.ContentTypes.TEXT)
async def questionnaire_accs_message(message: types.Message, state: FSMContext):
add_2baza = tuple(message.text.split())
cursor.executemany("INSERT INTO baza VALUES (?)",add_2baza)
b_base.commit()
await state.finish()
Ответы (1 шт):
Автор решения: Михаил Ширшов
→ Ссылка
Скину пример кода, как я делал. Я тоже только начал разбираться в SQL и Python, не ругайте особо)))
@dp.message_handler(content_types=['photo'])
async def scan_message(msg: types.Message):
await msg.reply('Пожалуй сохраню себе в базу id файла, для дальнейшего использования. Далее необходимо описать файл.\n\n<b>Пожалуйста, будьте внимательны с описанием файла, переименовать файл не получится!</b>')
document_id = msg.photo[0].file_id
global file_info
file_info = await bot.get_file(document_id)
await file.file.set()
@dp.message_handler(state=file.file)
async def file_1(message: types.Message, state: FSMContext):
Name_file_1 = message.text
cursor_b.execute(f"SELECT Unique_file_id FROM Foto_document_music WHERE Unique_file_id = '{file_info.file_unique_id}'") # Полезная ссылка по SQL https://proglib.io/p/sql-for-20-minutes
file_uniq= cursor_b.fetchone()
if file_uniq is None:
File_id = [message.from_user.full_name, Name_file_1, file_info.file_id, file_info.file_unique_id] # [] этими скобками мы включили в список, если нужно добавить что то, то добавляем через запятую
cursor_b.execute('INSERT INTO Foto_document_music VALUES(?, ?, ?, ?);',File_id)
connect_b.commit()
await message.answer('Файл сохранен в БД.')
await state.finish()
else:
cursor_b.execute(f"SELECT * FROM Foto_document_music WHERE Unique_file_id = '{file_info.file_unique_id}'") # Полезная ссылка по SQL https://proglib.io/p/sql-for-20-minutes
file_uniq_all= cursor_b.fetchall()
for result in file_uniq_all:
await message.answer(f'Такой файл уже имеется в БД.\n\nСохранил в БД:\n' + '<b>' + str(result[0]) + '</b>\n\n' + 'Имя файла:\n' + '<b>' + str(result[1]) + '</b>')
await bot.send_photo(chat_id=message.chat.id, photo=str(result[2]))
await state.finish()