-
Notifications
You must be signed in to change notification settings - Fork 0
/
db.py
48 lines (42 loc) · 2.05 KB
/
db.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import logging
import aiosqlite as asq
class BotDB:
def __init__(self, db_file):
self._db_file = db_file
# получаем булево значение по запросу
async def get_check(self, query, **kwargs):
async with asq.connect(self._db_file) as connection:
query += ' WHERE ' + ' AND '.join(['' + k + ' = ?' for k in kwargs.keys()])
values = list(kwargs.values())
async with connection.execute(query, values) as cursor:
return bool(await cursor.fetchone())
# получаем значение по запросу
async def get_stuff(self, query, **kwargs):
async with asq.connect(self._db_file) as connection:
query += ' WHERE ' + ' AND '.join(['' + k + ' = ?' for k in kwargs.keys()])
values = list(kwargs.values())
async with connection.execute(query, values) as cursor:
fetch = await cursor.fetchone()
return fetch[0]
# получаем список по запросу
async def get_stuff_list(self, query, **kwargs):
async with asq.connect(self._db_file) as connection:
if kwargs:
query += ' WHERE ' + ' AND '.join(['' + k + ' = ?' for k in kwargs.keys()])
values = list(kwargs.values())
else:
values = ''
async with connection.execute(query, values) as cursor:
fetch = await cursor.fetchall()
if int(len(fetch[0])) == 1:
result = [i[0] for i in fetch]
elif int(len(fetch[0])) == 2:
result = [(i[0], str(i[1])) for i in fetch]
return result
# запрос на изменение данных в бд
async def record_to_db(self, query, **kwargs):
async with asq.connect(self._db_file) as connection:
values = list(kwargs.values())
await connection.execute(query, values)
await connection.commit()
logging.info(f'NEW SQL QUERY : {query, values}')