Add sql query feature.

This commit is contained in:
Alexandr
2018-02-26 19:13:04 +01:00
parent 9e69de3db1
commit 51e2fe48db
2 changed files with 15 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ import datetime as dt
class DataBase: class DataBase:
def __init__(self, basefile, scheme): def __init__(self, basefile, scheme):
import sqlite3 import sqlite3
self.scheme = ''
try: try:
self.conn = sqlite3.connect(basefile, check_same_thread=False) self.conn = sqlite3.connect(basefile, check_same_thread=False)
except: except:
@@ -10,6 +11,7 @@ class DataBase:
return None return None
with open(scheme, 'r') as scheme_sql: with open(scheme, 'r') as scheme_sql:
sql = scheme_sql.read() sql = scheme_sql.read()
self.scheme = sql
if self.conn is not None: if self.conn is not None:
try: try:
cursor = self.conn.cursor() cursor = self.conn.cursor()
@@ -129,6 +131,7 @@ class DataBase:
if 'DELETE' in sql.upper() \ if 'DELETE' in sql.upper() \
or 'INSERT' in sql.upper() \ or 'INSERT' in sql.upper() \
or 'UPDATE' in sql.upper() \ or 'UPDATE' in sql.upper() \
or 'DROP' in sql.upper() \
or 'CREATE' in sql.upper() \ or 'CREATE' in sql.upper() \
or 'ALTER' in sql.upper(): or 'ALTER' in sql.upper():
return('gtfo') return('gtfo')

View File

@@ -17,6 +17,14 @@ class MessageWorker:
def handleUpdate(self, msg): def handleUpdate(self, msg):
try: try:
if msg['message']['text'] == '/scheme':
conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id']
chat_title = msg['message']['chat']['title']
self.db.add_conf(conf_id, chat_title)
self.send(id=conf_id, msg='```\n' + self.db.scheme + '\n```')
return True
if msg['message']['text'] == '/stat': if msg['message']['text'] == '/stat':
conf_id = msg['message']['chat']['id'] conf_id = msg['message']['chat']['id']
user_id = msg['message']['from']['id'] user_id = msg['message']['from']['id']
@@ -53,6 +61,10 @@ class MessageWorker:
sql = msg['message']['text'][5:] sql = msg['message']['text'][5:]
res = self.db.command(sql) res = self.db.command(sql)
if 'syntax' in str(res) \
or 'ambiguous' in str(res):
self.send(id=conf_id, msg=str(res))
return False
try: try:
msg = '```\n' msg = '```\n'
for z in res: for z in res: