In [1]:
from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import mapper, sessionmaker

In [2]:
class Story(object):
    pass

class PosTagEntry(object):
    pass
 
def loadSession():
    dbPath = '../corpus/stories.sqlite'
    engine = create_engine('sqlite:///%s' % dbPath, echo=True)
 
    metadata = MetaData(engine)

    bookmarks = Table('stories', metadata, autoload=True)
    mapper(Story, bookmarks)
    
    bookmarks = Table('pos_tags', metadata, autoload=True)
    mapper(PosTagEntry, bookmarks)
 
    Session = sessionmaker(bind=engine)
    session = Session()
    return session

session = loadSession()


2017-11-22 15:17:33,669 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2017-11-22 15:17:33,669 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,671 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2017-11-22 15:17:33,672 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,673 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("stories")
2017-11-22 15:17:33,673 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,676 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'stories' AND type = 'table'
2017-11-22 15:17:33,678 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,680 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list("stories")
2017-11-22 15:17:33,681 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,682 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'stories' AND type = 'table'
2017-11-22 15:17:33,682 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,685 INFO sqlalchemy.engine.base.Engine PRAGMA index_list("stories")
2017-11-22 15:17:33,685 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,686 INFO sqlalchemy.engine.base.Engine PRAGMA index_list("stories")
2017-11-22 15:17:33,686 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,687 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'stories' AND type = 'table'
2017-11-22 15:17:33,688 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,693 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("pos_tags")
2017-11-22 15:17:33,694 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,695 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'pos_tags' AND type = 'table'
2017-11-22 15:17:33,696 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,697 INFO sqlalchemy.engine.base.Engine PRAGMA foreign_key_list("pos_tags")
2017-11-22 15:17:33,697 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,699 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'pos_tags' AND type = 'table'
2017-11-22 15:17:33,699 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,700 INFO sqlalchemy.engine.base.Engine PRAGMA index_list("pos_tags")
2017-11-22 15:17:33,700 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,701 INFO sqlalchemy.engine.base.Engine PRAGMA index_list("pos_tags")
2017-11-22 15:17:33,702 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,704 INFO sqlalchemy.engine.base.Engine PRAGMA index_info("sqlite_autoindex_pos_tags_1")
2017-11-22 15:17:33,705 INFO sqlalchemy.engine.base.Engine ()
2017-11-22 15:17:33,707 INFO sqlalchemy.engine.base.Engine SELECT sql FROM  (SELECT * FROM sqlite_master UNION ALL   SELECT * FROM sqlite_temp_master) WHERE name = 'pos_tags' AND type = 'table'
2017-11-22 15:17:33,708 INFO sqlalchemy.engine.base.Engine ()

In [3]:
stories = session.query(Story).all()
print(len(stories))
print(dir(stories[0]))


2017-11-22 15:17:33,809 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2017-11-22 15:17:33,811 INFO sqlalchemy.engine.base.Engine SELECT stories.id AS stories_id, stories.title AS stories_title, stories.published AS stories_published, stories.tags AS stories_tags, stories.text AS stories_text, stories.likes AS stories_likes, stories.hrefs AS stories_hrefs, stories.url AS stories_url 
FROM stories
2017-11-22 15:17:33,815 INFO sqlalchemy.engine.base.Engine ()
23558
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_sa_class_manager', '_sa_instance_state', 'hrefs', 'id', 'likes', 'published', 'tags', 'text', 'title', 'url']

In [4]:
print(stories[0].text)


Работаю в провинциальном городе в магазине отделочных материалов и сантехники.Заходит к нам на днях надменная пергидролевая дева, покрытая слоем штукатурки толщиной в палец. Собирается с мыслями, напускает на себя важный вид и обращается ко мне:Дева, медленно и с видом опытного сантехника: Молодой человек, у вас ванны железные есть?Я: Нет, у нас только акрил. Металлических нет.Дева: Молодой человек, я не спрашиваю металлические, я спрашиваю железные!Я: Извините, железных тоже нет.Дева презрительно смотрит на меня, бурчит что-то себе под нос, и, виляя бедрами, уходит. Смотрим в окно. Выходит. Подходит к побитой жизнью шестерке, деловито садится на переднее сиденье, подзывает торопливо курящего поодаль водителя.Дева, возмущенно: Понабрали крестьян, металлические ванны от железных не отличают!Водитель, тяжело вздохнув, затаптывает окурок, занимает свое место, и экипаж отправляется дальше, на поиски волшебной неметаллической ванны из железа.

In [5]:
# too slow
#pos_tags = session.query(PosTagEntry).all()
#print(len(pos_tags))
#print(dir(pos_tags[0]))

In [6]:
import scripts.get_tagged_text as get_tagged

In [7]:
print(get_tagged.get_tagged_story(2, session, Story, PosTagEntry))


2017-11-22 15:17:34,735 INFO sqlalchemy.engine.base.Engine SELECT pos_tags.id AS pos_tags_id, pos_tags.story_id AS pos_tags_story_id, pos_tags.tag AS pos_tags_tag, pos_tags.start AS pos_tags_start, pos_tags."end" AS pos_tags_end 
FROM pos_tags 
WHERE pos_tags.story_id = ?
2017-11-22 15:17:34,736 INFO sqlalchemy.engine.base.Engine (2,)
Работаю<V> в<PR> провинциальном<A=m> городе<S> в<PR> магазине<S> отделочных<A=pl> материалов<S> и<CONJ> сантехники<S>.Заходит<V> к<PR> нам<S-PRO> на<PR> днях<S> надменная<A=f> пергидролевая<A=f> дева<S>, покрытая<V> слоем<S> штукатурки<S> толщиной<S> в<PR> палец<S>. Собирается<V> с<PR> мыслями<S>, напускает<V> на<PR> себя<S-PRO=acc> важный<A=m> вид<S> и<CONJ> обращается<V> ко<PR> мне<S-PRO>:Дева<S>, медленно<ADV> и<CONJ> с<PR> видом<S> опытного<A=m> сантехника<S>: Молодой<A=m> человек<S>, у<PR> вас<S-PRO> ванны<A=pl> железные<A=pl> есть<V>?Я<S-PRO>: Нет<PART>, у<PR> нас<S-PRO> только<PART> акрил<V>. Металлических<A=pl> нет<PRAEDIC>.Дева<S>: Молодой<A=sg> человек<S>, я<S-PRO> не<PART> спрашиваю<V> металлические<A=pl>, я<S-PRO> спрашиваю<V> железные<A=pl>!Я<S-PRO>: Извините<V>, железных<A=pl> тоже<PART> нет<PRAEDIC>.Дева<S> презрительно<ADV> смотрит<V> на<PR> меня<S-PRO>, бурчит<V> что<CONJ>-то<S-PRO> себе<S-PRO=dat> под<PR> нос<S>, и<CONJ>, виляя<V> бедрами<S>, уходит<V>. Смотрим<V> в<PR> окно<S>. Выходит<V>. Подходит<V> к<PR> побитой<A=f> жизнью<S> шестерке<S>, деловито<ADV> садится<V> на<PR> переднее<A=n> сиденье<S>, подзывает<V> торопливо<ADV> курящего<V> поодаль<S> водителя<S>.Дева<S>, возмущенно<ADV>: Понабрали<V> крестьян<S>, металлические<A=pl> ванны<S> от<PR> железных<A=pl> не<PART> отличают<V>!Водитель<S>, тяжело<ADV> вздохнув<V>, затаптывает<V> окурок<S>, занимает<V> свое<A=n> место<S>, и<CONJ> экипаж<S> отправляется<V> дальше<ADV=comp>, на<PR> поиски<S> волшебной<A=f> неметаллической<A=f> ванны<S> из<PR> железа<S>.

In [ ]: