Как использовать объектную переменную вне объекта и вне класса в другом файле
Есть у меня дискорд бот, который состоит из 3 файлов: rain-bot.py ; variables.py и sqlite_exp.py. Я хочу его научить работать с базами данных sqlite3, сделал почти весь код который нужен, кроме проверки существования id пользователя в базе данных так как для сравнения в основном файле нужно записать результат в переменную. Но я не могу ее импортировать в основной файл, выскакивает ошибка:
ImportError: cannot import name 'result' from 'sqlite_exp' (F:\python\rain-bot\sqlite_exp.py)
Говорю честно что я шерстил гугл сколько мог, но то ли из-за того что я тупой, то ли решения плохо были объяснены и я ничего не понял. В общем надежда только на работяг. Код прилагаю снизу
P.S закоменченная часть не доделана и не имеет отношения к делу, к делу отношение имеет только check_userid
P.S.S в check_userid я сделал временное решение которое мне не подходит так как возвращает только
логический тип данных (bool) и мне нужно результат чтения их БД записать в переменную для дальнейшего сравнения
P.S.S.S from sqlite_exp import Exp, result к сожалению не работает
Файл sqlite_exp.py
# Система экспы для дискорд бота
import sqlite3
class Exp:
max_xp = 10000
def __init__(self, database):
"""Подключаемся к базе данных"""
self.connection = sqlite3.connect(database)
self.cursor = self.connection.cursor()
def add_exp(self, user_id_data):
with self.connection:
return self.cursor.execute("INSERT INTO xp (user_id, level, exp) VALUES (?, 0, 10)", (user_id_data,))
def add_level(self, user_id_data):
with self.connection:
return self.cursor.execute("INSERT INTO xp (user_id, level, exp) VALUES (?, 1, 0)", (user_id_data,))
def edit_exp(self, user_id_data):
with self.connection:
return self.cursor.execute("UPDATE xp set exp = (exp + 10) WHERE user_id = ?", (user_id_data,))
def edit_lvl(self, user_id_data):
with self.connection:
return self.cursor.execute("UPDATE xp set level = (level + 1) WHERE user_id = ?", (user_id_data,))
def check_userid(self, user_id_data):
with self.connection:
result = self.cursor.execute("SELECT user_id FROM xp WHERE user_id = ?", (user_id_data,)).fetchall()
return bool(len(result))
# def convert_exp_to_lvl(self, user_id_data):
# with self.connection:
# resultxp = self.cursor.execute("SELECT exp FROM xp WHERE user_id = ?", (user_id_data,))
# if resultxp >= max_xp:
# self.cursor.execute("INSERT INTO xp (user_id, level, exp)")
def close(self):
"""Закрываем соединение с БД"""
self.connection.close()
Ответы (1 шт):
Может быть, как-то так:
В методе класса:
def check_userid(self, user_id_data):
with self.connection:
result = self.cursor.execute("SELECT user_id FROM xp WHERE user_id = ?", (user_id_data,)).fetchall()
bool_var = bool(len(result))
return bool_var, result
В главной программе:
ex = Exp(database)
...
v,r = ex.check_userid(user_id_data)