Iangyl
@Iangyl
Размышляю, практикуюсь и учусь.

Как передать данные из бота в бд?

Пишу бот-опросник на питоне для ТГ. Данные кладу в объект, который я создал ранее.
Так же я создал бд с помощью SQLighter. В конце опроса закидываю данные в бд, и мне выскакивает ошибка:

TypeError: object NoneType can't be used in 'await' expression

Сюда приложу код:
bot
@dp.callback_query_handler(lambda c: c.data == 'send')
def send_data_to_base():
if not db.user_exist(storage.user_id):
    db.add_new_user(storage.user_id, storage.gender, storage.age, storage.salary, storage.gov_rate, 
storage.city_condition, storage.level_of_development)

data base
import sqlite3

class SQLighter:
def __init__(self, database):
    self.connection = sqlite3.connect(database)
    self.cursor = self.connection.cursor()

def get_info(self):
    with self.connection:
        return self.cursor.execute("SELECT * FROM `answers`").fetchall()

def user_exist(self, user_id):
    with self.connection:
        result = self.cursor.execute("SELECT * FROM `answers` WHERE `user_id` = ?", (user_id,)).fetchall()
        return bool(len(result))

def add_new_user(self, user_id, gender, age, salary, gov_rate, city_condition, level_of_development):
    with self.connection:
        return self.cursor.execute("INSERT INTO `answers` (`user_id`, `gender`, `age`, `salary`, `gov_rate`, `city_condition`, `level_of_development`) VALUES(?,?,?,?,?,?,?)", (user_id, gender, age, salary, gov_rate, city_condition, level_of_development))


Объект проверял на пустоту - он не пустой.

PS: пользуюсь aiogram библиотекой.
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@AlexPyth
Разработчик ПО
Не должна ли функция send_data_to_base быть асинхронной?

async def send_data_to_base():
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Миллиардер. Честно, 100 пистонов!
Используйте MySQL.
Ответ написан
Ваш ответ на вопрос

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

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