예제 #1
0
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")
예제 #2
0
    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
예제 #3
0
 def builderSql(self):
     """
     构建查询sql
     """
     if not self.table_prop:
         raise Exception("table是必须的参数")
     self._sql, self._params = QueryBuilder().build(self)
예제 #4
0
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)
예제 #5
0
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);
예제 #6
0
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)
예제 #7
0
 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
예제 #8
0
 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
예제 #9
0
 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
예제 #10
0
    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>")
예제 #11
0
 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>")
예제 #12
0
 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
예제 #14
0
 def __init__(self):
   self.query = QueryBuilder ()
예제 #15
0
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()
    '''
예제 #16
0
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

예제 #17
0
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()
예제 #18
0
 def __init__(self):
     self.DBConnection = DBRetriever()
     self.Logger = FileLogger()
     self.Locator = LocationCalculator()
     self.QueryBuilder = QueryBuilder()
예제 #19
0
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('&amp;', '&')
        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]
예제 #20
0
 def __init__(self):
     self.query = QueryBuilder()