Привет всем, не могу понять, как сделать класс на asyncpg для бота в ТГ на aiogram. Раньше работал с telebot и psycopg2, и всё было замечательно. Как закрывать соединение, если в __del__ нельзя поместить
await self.__conn.close()
? Такое чувство, что залез фиг знает куда. Буду рад, если кто-то скинет свой класс, чтобы я взял за пример его.
Ругается:
cannot perform operation: another operation is in progress
class DB:
def __init__(self):
self.__log = Logger('db')
asyncio.run(self.__run())
async def __run(self):
try:
self.__conn = await asyncpg.connect(
user=Config.db['username'],
password=Config.db['password'],
database=Config.db['database'],
host=Config.db['host'],
port=Config.db['port']
)
except Exception as error:
self.__log.error(error)
async def __check_reg(self, user_id: int) -> bool:
try:
if len(await self.__conn.fetchrow("SELECT * FROM users WHERE id = $1", user_id)) > 0:
return True
return False
except Exception as error:
self.__log.error(error)
return False
async def register_user(self, user) -> bool:
if await self.__check_reg(user['id']) is False:
try:
await self.__conn.execute(
'''INSERT INTO users
(users.id, users.first_name, users.last_name, users.username, users.timestamp)
VALUES ($1, $2, $3, $4, $5)''', user['id'], user['first_name'], user['last_name'],
user['username'], datetime.now())
return True
except Exception as error:
self.__log.error(error)
return False