def send(): if request.method == 'POST': text = request.form['search'] # text conceptIdC = ConceptIdentifier(text) # 1 Component entityIdC = EntitiesIdentifier(text) # 2 Component concepts = conceptIdC.GetConcept() # [[string key, string value]] or None entities = entityIdC.GetEntity() # [[string label, string text]] or None numEnts = len(entities) if entities is not None else 0 numConcepts = len(concepts) if concepts is not None else 0 startConceptIndex = conceptIdC.GetStartIndex() # 3 Component patternId = PatternIdentifier(text, numEnts, numConcepts, startConceptIndex) questionIndex = patternId.GetPattern() # string or None # 4 Component. Query Builder queryBuilderC = QueryBuilder(questionIndex,concepts,entities) query = queryBuilderC.GetQuery() print(concepts) print(questionIndex) print(query) # 5 Component. Query Executor try: queryExecutorC = QueryExecutor(query) response = queryExecutorC.ExecuteQuery() return render_template("overpassResult.html", result = response, questionIndex = questionIndex, resultLen = len(response.nodes) ) except Exception as e: print("#Error inside of Query Executor") print(e) return render_template("index.html")
def update(self, table, data, where=None): """ 更新 :param table: 执行的数据表 :param data: 需要插入的数据 :param where: 更新的条件 :return: self """ self._type = 2 sql = "UPDATE " + table + " SET " last_key = list(data.keys())[-1] self._params = [] for key, value in data.items(): self._params.append(value) if key == last_key: sql += str(key) + "=" + "%s" else: sql += str(key) + "=" + "%s," if where: self._checkWhere(where) builder = QueryBuilder() where = builder.buildWhere(where, {}) builderParams = builder.params self._params = self._params + builderParams sql += " " + where self._sql = sql return self
def builderSql(self): """ 构建查询sql """ if not self.table_prop: raise Exception("table是必须的参数") self._sql, self._params = QueryBuilder().build(self)
class DataManager: def __init__(self): self.DBConnection = DBRetriever() self.Logger = FileLogger() self.Locator = LocationCalculator() self.QueryBuilder = QueryBuilder() def Manage(self, parameters): # BuildQuery query = self.QueryBuilder.Build(parameters) # IfDeviceID if 'DeviceID' in query: return self.GetDeviceLocation(query.pop('DeviceID'), query) # IfBeaconID if 'BeaconID' in query: self.Logger.Info('Datamanager: ' + str(query)) return self.GetBeaconinformation('BeaconInformation', query) def GetDeviceLocation(self, deviceID, filter): nearByBeacons = self.Querydatabase(deviceID, filter) return self.Locator.Locate(nearByBeacons) def GetBeaconinformation(self, beaconInformation, filter): return self.Querydatabase(beaconInformation, filter) def Querydatabase(self, collectionName, filter): return self.DBConnection.QueryDatabase(collectionName, filter)
class YahooFetcher: def __init__(self): self.query = QueryBuilder () # # Gets historical data in json format. # # Output: ticker, date, open, high, low, close, volume, adjusted close # def getHistAsJson (self, symbol, startDate, endDate, event="quote"): rows = self.query.getHistURL(symbol, startDate, endDate, event) fullData = [data.split(",") for data in rows[1:]] jsonList = []; if event == "quote": for elem in fullData[1:]: if len([n for n in elem if n == 'null']) > 0: continue json = {'date': elem[0], 'o': float(elem[1]), 'h': float(elem[2]), 'l': float(elem[3]), \ 'c': float(elem[4]), 'adjc': float(elem[5]), 'v': int(elem[6]), "ticker":symbol}; jsonList.append(json) return jsonList elif event == "div" or event == "split": for elem in fullData[1:]: json = {"date":elem[0], event:float(elem[1])} jsonList.append(json) return jsonList def getComponents(self, index): return ComponentsExtractor().getComponents(index);
class YahooFetcher: def __init__(self): self.query = QueryBuilder() # # Gets historical data in json format. # # Output: ticker, date, open, high, low, close, volume, adjusted close # def getHistAsJson(self, symbol, startDate, endDate, event="quote"): rows = self.query.getHistURL(symbol, startDate, endDate, event) fullData = [data.split(",") for data in rows[1:]] jsonList = [] if event == "quote": for elem in fullData[1:]: if len([n for n in elem if n == 'null']) > 0: continue json = {'date': elem[0], 'o': float(elem[1]), 'h': float(elem[2]), 'l': float(elem[3]), \ 'c': float(elem[4]), 'adjc': float(elem[5]), 'v': int(elem[6]), "ticker":symbol} jsonList.append(json) return jsonList elif event == "div" or event == "split": for elem in fullData[1:]: json = {"date": elem[0], event: float(elem[1])} jsonList.append(json) return jsonList def getComponents(self, index): return ComponentsExtractor().getComponents(index)
def delete(self, table, where=None): """ 删除 :param table: 执行的数据表 :param where: 删除的条件 :return: self """ self._type = 2 self._sql = "DELETE FROM " + table if where: self._checkWhere(where) builder = QueryBuilder() where = builder.buildWhere(where, {}) builderParams = builder.params self._params = self._params + builderParams self._sql += " " + where return self
def bathInsert(self, table, datas: list): """ 批量插入 :param table: 执行的数据表 :param datas: 需要插入的数据列表 :return: self """ self._type = 2 self._sql, self._params = QueryBuilder().buildInsert(table, datas) return self
def insert(self, table, data: dict): """ 插入 :param table: 执行的数据表 :param data: 需要插入的数据 :return: self """ self._type = 2 self._sql, self._params = QueryBuilder().buildInsert(table, [data]) return self
def birthday(self, chat_id, msg): tokens = msg["text"].split() if len(tokens) > 1: full_name = msg["text"].replace("/birthday ", "") unidecode_name = unidecode.unidecode(full_name).lower().replace(' ', '') result_query = self.database.execute_query(QueryBuilder.get_query(chat_id, unidecode_name)) if len(result_query) == 1: if time.time() - result_query[0][3] < 60 and result_query[0][3] is not 0: if not result_query[0][4]: self.bot.sendMessage(chat_id, "You already asked, try again in one minute") self.database.execute_query(QueryBuilder.update_already_asked(chat_id, unidecode_name, True)) return elif len(result_query) > 1: message = full_name + " is ambigious\n you could have meant:" for row in result_query: message += "\t" + row[2] + "\n" self.bot.sendMessage(chat_id, message) return else: self.bot.sendMessage(chat_id, full_name + " does not exist yet \nUse /birth for " + full_name + " to exist") return self.database.execute_query(QueryBuilder.update_already_asked(chat_id, unidecode_name, False)) self.database.execute_query(QueryBuilder.update_last_modified(chat_id, unidecode_name, int(time.time()))) result_query = self.database.execute_query(QueryBuilder.update_age(chat_id, unidecode_name, 1)) if len(result_query) == 1: age = result_query[0][2] birthday_msg = "Whoooohoooooo! Happy birthday! " + full_name + " is now " + str(age) + " years old" self.bot.sendMessage(chat_id, birthday_msg) elif len(result_query) > 1: message = full_name + " is ambigious\n you could have meant:" for row in result_query: message += "\t" + row[2] + "\n" self.bot.sendMessage(chat_id, message) else: self.bot.sendMessage(chat_id, full_name + " does not exist yet \nUse /birth for " + full_name + " to exist") else: self.bot.sendMessage(chat_id, "usage /birthday <name of person>")
def birth(self, chat_id, msg): tokens = msg["text"].split() if len(tokens) > 1: full_name = msg["text"].replace("/birth ", "") unidecode_name = unidecode.unidecode(full_name).lower().replace(' ', '') result = self.database.execute_query(QueryBuilder.add_query(chat_id, unidecode_name, 0, 0, False)) if result == "23505": self.bot.sendMessage(chat_id, full_name + " already exists in some sort of way or shape") elif result == "25P02": self.bot.sendMessage(chat_id, "Something went terribly wrong, please contact your shizadmin") else: self.bot.sendMessage(chat_id, full_name + " is born") else: self.bot.sendMessage(chat_id, "usage: /birth <name of person>")
def age(self, chat_id, msg): tokens = msg["text"].split() if len(tokens) > 1: full_name = msg["text"].replace("/age ", "") unidecode_name = unidecode.unidecode(full_name).lower().replace(' ', '') result_query = self.database.execute_query(QueryBuilder.get_query(chat_id, unidecode_name)) if len(result_query) == 1: age = result_query[0][2] self.bot.sendMessage(chat_id, full_name + " is " + str(age) + " years old") elif len(result_query) > 1: message = full_name + " is ambigious\n you could have meant:" for row in result_query: message += "\t" + row[2] + "\n" self.bot.sendMessage(chat_id, message) else: self.bot.sendMessage(chat_id, full_name + " does not exist yet \nUse /birth for " + full_name + " to exists") else: self.bot.sendMessage(chat_id, "usage /age <name of person>")
def inputQuery(self, op): if op == '1': query = input("Enter query: ") self.pi.loadDocuments() self.pi.buildDictionary() qb = QueryBuilder(query, positionalIndex=self.pi) output = qb.executeQuery() print(output) if len(qb.transformQuery()) == 1: self.printOutput(query) print("\n") elif op == '2': query = input("Enter boolean query: ") self.ii.loadDocuments() self.ii.buildDictionary() qb = QueryBuilder(query, invertedIndex=self.ii) output = qb.executeQuery() print(output) print("\n") else: return
def __init__(self): self.query = QueryBuilder ()
from QueryBuilder import QueryBuilder import QueryConstants import DataTypes if __name__ == '__main__': builder = QueryBuilder() ''' q = builder.setTableName('test')\ .setAction(QueryConstants.ACTION_CREATE_TABLE)\ .setKVMap({'1':DataTypes.MYSQL_TXT,'b':[DataTypes.MYSQL_FLOAT(1,4),'AUTO INCREMENT']})\ .create() query = builder.setTableName('test')\ .setAction(QueryConstants.ACTION_DELETE)\ .setwhereArgs([('N',{'color':'red'},'A',('N',({'a':3},'O',{'b':4})),'A',{'GENDER':'M'})])\ .create() qq = builder.setTableName('test')\ .setAction(QueryConstants.ACTION_UPDATE)\ .setKVMap({'col1':1,'col2':2,'col3':3})\ .setwhereArgs([{'col1':0},'O',{'col2':10}])\ .create() insertQueryTest = builder.setTableName('Test')\ .setKVMap({'col1':1, 'col2': 2, 'name':'Mike He'})\ .setAction(QueryConstants.ACTION_INSERT)\ .create() print(insertQueryTest) q1 = builder.setTableName('T')\ .setAction(QueryConstants.ACTION_SELECT)\ .setwhereArgs([{'col1':1},'A',{'col2':2},'O',{'name':'hdy'}])\ .create() '''
from QueryBuilder import QueryBuilder #padrão fluente (Classe Select) sql = QueryBuilder.select(["id", "descricao"])\ .from_table("produto").\ where("id").\ lesser_than("11").\ and_where("descricao").\ equals("'superman'") print(sql.command) #prototype
from flask import Flask, render_template, jsonify, request from flask_pymongo import PyMongo import ast from QueryBuilder import QueryBuilder app = Flask(__name__, static_folder="./frontend", template_folder="./frontend") app.config["MONGO_DB"] = "libster" app.config["MONGO_URI"] = "mongodb://*****:*****@app.route("/") def index(): return render_template('index.html') @app.route("/api/getPrefixes", methods=['GET']) def get_prefix_list(): prefixes_sr = mongo.db.prefixes_sr # kolekcija prefixes_sr prefixes = mongo.db.prefixes # kolekcija prefixes prefixes_cursor = prefixes.find( {}, { '_id': 0, 'value': 0 } ) # izvrsava se query koji ne vraca id i value od dokumenta, a zatim vraca cursor prefixes_dict = dict()
def __init__(self): self.DBConnection = DBRetriever() self.Logger = FileLogger() self.Locator = LocationCalculator() self.QueryBuilder = QueryBuilder()
import requests from QueryBuilder import QueryBuilder from MovieLink import MovieLink from bs4 import BeautifulSoup import json if __name__ == "__main__": q = QueryBuilder() q.add_name("Титаник") q.add_year(1997) q.add_quality("1080p") response = requests.get(q.build()) soup = BeautifulSoup(response.text, 'lxml') ans = [] for candidate in soup.find_all('td', {"class": "nam"}): href = "https://kinozal-tv.appspot.com" + \ str(candidate).split('>')[1].split()[2].split('"')[1].replace('&', '&') response = requests.get(href) candidate_soup = BeautifulSoup(response.text, 'lxml') quality, video, audio, size, duration, translation = candidate_soup.find( 'div', id='tabs').text.split('\n')[:6] quality = quality.split(':')[1].strip() video = video.split(':')[1].strip() audio = audio.split(':')[1].strip() size = size.split(':')[1].strip() duration = duration.split()[1].strip() name = candidate.text.split('/')[0] translation = translation.split(':')[1].strip() releaseYear = candidate_soup.text[ candidate_soup.text.find('Год выпуска:') + 13:candidate_soup.text.find('Год выпуска:') + 17]
def __init__(self): self.query = QueryBuilder()