aboutsummaryrefslogtreecommitdiff
path: root/wqflask/maintenance/quick_search_table.py
blob: 51426ab22431769fc8107ea7485d0f6c811756cc (plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from __future__ import print_function, division, absolute_import

import sys
sys.path.append("../../..")

import sqlalchemy as sa
from sqlalchemy.dialects import mysql
from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.ext.declarative import declarative_base

import zach_settings as zs

Engine = sa.create_engine(zs.SQLALCHEMY_DATABASE_URI,
                       #encoding='utf-8',
                       #client_encoding='utf-8',
                       #echo="debug",
                       )

Session = scoped_session(sessionmaker(bind=Engine)) #, extension=VersionedListener()))
#Xsession = Session()

Base = declarative_base(bind=Engine)
Metadata = sa.MetaData()
Metadata.bind = Engine


class ProbeSet(Base):
    __tablename__ = 'ProbeSet'
    __table_args__ = {'autoload': True}
    
#QuickSearch = sa.Table("QuickSearch", Metadata,
#                    sa.Column('table_name', sa.String),
#                    sa.Column('the_key', sa.String),
#                    sa.Column('terms', sa.String))

class QuickSearch(Base):
    table_name = Column(String)
    the_key = Column(String)
    terms = Column(String)
    
    def __init__(self, table_name, the_key, terms):
        self.table_name = table_name
        self.the_key = the_key
        self.terms = get_unique_terms(terms)

def get_unique_terms(*args):
    if not args:
        return None
    unique = set()
    for item in args:
        #print("locals:", locals())
        if not item:
            continue
        for token in item.split():
            if token.startswith(('(','[')):
                token = token[1:]
            if token.endswith((')', ']')):
                token = token[:-1]
            if len(token) > 2:
                unique.add(token)
    print("\nUnique terms are: {}\n".format(unique))
    return " ".join(unique)


def main():
    for ps in page_query(Session.query(ProbeSet)):   #all()
        terms = get_unique_terms(ps.Name,
                         ps.Symbol,
                         ps.description)
        
        
        
def page_query(q):
    """http://stackoverflow.com/a/1217947/1175849"""
    offset = 0
    while True:
        r = False
        for elem in q.limit(1000).offset(offset):
           r = True
           yield elem
        offset += 1000
        if not r:
            break

if __name__ == "__main__":
    main()