You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.0 KiB
46 lines
1.0 KiB
import json |
|
|
|
from sqlalchemy import create_engine, Column, String |
|
from sqlalchemy.ext.declarative import declarative_base |
|
from sqlalchemy.orm import sessionmaker |
|
|
|
engine = create_engine('sqlite:///data/qotnews.sqlite') |
|
Session = sessionmaker(bind=engine) |
|
|
|
Base = declarative_base() |
|
|
|
class Story(Base): |
|
__tablename__ = 'stories' |
|
|
|
sid = Column(String, primary_key=True) |
|
meta_json = Column(String) |
|
full_json = Column(String) |
|
|
|
def init(): |
|
Base.metadata.create_all(engine) |
|
|
|
def get_meta(sid): |
|
session = Session() |
|
return session.query(Story).get(sid).meta_json |
|
|
|
def get_full(sid): |
|
session = Session() |
|
return session.query(Story).get(sid).full_json |
|
|
|
def put(story): |
|
full_json = json.dumps(story) |
|
|
|
story.pop('text') |
|
story.pop('comments') |
|
meta_json = json.dumps(story) |
|
|
|
try: |
|
session = Session() |
|
s = Story(sid=story['id'], full_json=full_json, meta_json=meta_json) |
|
session.merge(s) |
|
session.commit() |
|
except: |
|
session.rollback() |
|
raise |
|
finally: |
|
session.close()
|
|
|