Browse Source

Update sqlachemy output (still failing though)

theenglishway (time) 7 years ago
parent
commit
e2aea04667

+ 9 - 30
twhatter/output/sqlalchemy/db.py

@@ -28,10 +28,8 @@ class Database(OutputBase):
         Base.metadata.create_all(engine)
 
     def start(self):
-        return self.session_maker()
-
-    def stop(self, session):
-        session.close()
+        self.session = self.session_maker()
+        return self.session
 
     def _add_no_fail(self, session, obj):
         # This is an extremely unefficient way to add objects to the database,
@@ -46,36 +44,17 @@ class Database(OutputBase):
             return 0
 
     def output_tweets(self, tweets):
-        client_timeline = ClientTimeline(user, limit)
         Tweet = class_registry['Tweet']
-        User = class_registry['User']
-        session = self.start()
-        tweets = [Tweet.from_raw(t) for t in client_timeline]
         logger.info("Adding {} tweets".format(len(tweets)))
 
-        profiles = set()
-        for t in client_timeline:
-            p = ClientProfile(t.username)
-            profiles.add(p)
-        users = [User.from_raw(p.user) for p in profiles]
-
-        unique_errors = 0
-        for u in users:
-            self._add_no_fail(session, u)
-        for t in tweets:
-            unique_errors += self._add_no_fail(session, t)
-
-        if unique_errors:
-            logger.info(
-                "{} tweets were already in the database".format(unique_errors)
-            )
-
-        self.stop(session)
+        self.session.add_all([Tweet.from_raw(t) for t in tweets])
 
     def output_users(self, users):
         User = class_registry['User']
-        p = ClientProfile(user)
-        session = self.start()
+        logger.info("Adding {} tweets".format(len(users)))
+
+        self.session.add_all([User.from_raw(u) for u in users])
 
-        self._add_no_fail(session, User.from_raw(p.user))
-        self.stop(session)
+    def stop(self):
+        self.session.commit()
+        self.session.close()

+ 1 - 0
twhatter/output/sqlalchemy/models/tweets.py

@@ -11,6 +11,7 @@ class Tweet(Base):
     __tablename__ = 'tweets'
 
     id = Column(Integer, primary_key=True)
+    fullname = Column(String)
     username = Column(String)
     user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
     comments_nb = Column(Integer)

+ 1 - 0
twhatter/output/sqlalchemy/models/user.py

@@ -10,6 +10,7 @@ class User(Base):
 
     id = Column(Integer, primary_key=True)
     fullname = Column(String)
+    username = Column(String)
     join_date = Column(DateTime)
     tweets_nb = Column(Integer)
     following_nb = Column(Integer)