Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. import os
  2. import logging
  3. from sqlalchemy import Column, Integer, String
  4. from sqlalchemy.ext.declarative import declarative_base
  5. from sqlalchemy import create_engine, MetaData
  6. from sqlalchemy.orm import sessionmaker
  7. import config
  8.  
  9.  
  10. Base = declarative_base()
  11.  
  12. def error_return_beforeID(fn):
  13. def aux(*args, **kwargs):
  14. try:
  15. fn(*args, **kwargs)
  16. except Exception as e:
  17. return 1
  18. return aux
  19.  
  20. def error_in_set_to_base(fn):
  21. def aux(*args, **kwargs):
  22. try:
  23. fn(*args, **kwargs)
  24. except Exception as e:
  25. logging.error(e)
  26. return aux
  27.  
  28. class dataBase():
  29. class Admins(Base):
  30. __tablename__ = 'admins'
  31.  
  32. id = Column(Integer, primary_key=True)
  33. login = Column(String)
  34.  
  35. def __repr__(self):
  36. return "<Admins (id = %s, login='%s')>" % (self.id, self.login)
  37.  
  38. class News(Base):
  39. __tablename__ = 'news'
  40.  
  41. id = Column(Integer, primary_key=True)
  42. link = Column(String)
  43. text = Column(String)
  44. call = Column(Integer)
  45.  
  46. def __repr__(self):
  47. return "<News (id = %s, link='%s', text = '%s', call = '%s')>" \
  48. % (self.id, self.link,self.text, self.call)
  49.  
  50. def __init__(self, object_queue_news):
  51. self.connect = create_engine('sqlite:///'+os.path.abspath(os.curdir)+config.link_db, echo=True)
  52. self.meta = MetaData()
  53. self.Session = sessionmaker(bind=self.connect)
  54. self.object_queue_news = object_queue_news
  55.  
  56. def getAdmins(self):
  57. session = self.Session()
  58. word = session.query(self.Admins).first()
  59. session.close()
  60.  
  61. @error_return_beforeID
  62. def return_beforeID(self, session):
  63. beforeID = session.query(self.News).order_by(self.News.id.desc()).first()
  64. beforeID = beforeID.id + 1
  65. return beforeID
  66.  
  67. def get_before_id(self):
  68. self.meta.clear()
  69. session = self.Session()
  70. beforeID = self.return_beforeID(session)
  71. session.close()
  72. return beforeID
  73.  
  74. def set_news(self,dict_):
  75. self.meta.clear()
  76. for key in dict_:
  77. beforeID = self.get_before_id()
  78. session = self.Session()
  79. self.set_news_to_base(dict_, key, session, beforeID)
  80. session.close()
  81.  
  82. @error_in_set_to_base
  83. def set_news_to_base(self, dict_, key, session, beforeID):
  84. insert = self.News(id=beforeID, link=dict_[key], text=key, call=0)
  85. session.add(insert)
  86. session.commit()
  87.  
  88.  
  89. def from_queue_to_database(self):
  90. while True:
  91. try:
  92. self.set_news(self.object_queue_news.dequeue())
  93. except:
  94. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement