@mikitos59

Как использовать функцию в других функциях?

Имею много хендлеров, где постоянно идет подключение к бд и проверка ячейки. Решил вынести отдельно функцию connect, чтобы не прописывать постоянно конект к бд. Как сделать, чтобы использовать эту функцию во всех хендлерах ? Спасибо за ответ)

def connect(message: types.Message):
    connect = sqlite3.connect('main.db')
    cursor = connect.cursor()
    cursor.execute('SELECT Bat FROM Users WHERE id = ?', (message.from_user.id))
    result = cursor.fetchone()
    if result is None:
        print('none')
        
        
@dp.message_handler(text='Hi')

    for row in result:
        if row == 'X':
            cursor.execute("SELECT `Glo` FROM `Scev` WHERE `test` = 'test'")
            row = cursor.fetchone()
            await message.answer(row[0], reply_markup=il_1)
    connect.close()
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
Используй конструкцию with ... as... Она для этого и придумана...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@o5a
Если цель - использовать одно соединение, можно сделать через класс.

class DataBase():
    def __init__(self, database_name):
        self.conn = sqlite3.connect(database_name)
        self.cursor = self.conn.cursor()

    def commit(self):
        self.conn.commit()

    def close(self):
        self.conn.close()

# создаем объект класса
db = DataBase('my_db.db')
cursor = db.cursor

# и в любой функции можем использовать
cursor.execute ...
db.commit()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект