optimise database and correct bug on user mention
authorYves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Wed, 27 Jul 2011 17:23:16 +0200
changeset 250 6334869ab06d
parent 249 b31aef9365a8
child 251 d81cc587cc4d
optimise database and correct bug on user mention
script/lib/iri_tweet/models.py
script/lib/iri_tweet/utils.py
--- a/script/lib/iri_tweet/models.py	Wed Jul 27 12:29:02 2011 +0200
+++ b/script/lib/iri_tweet/models.py	Wed Jul 27 17:23:16 2011 +0200
@@ -124,7 +124,7 @@
     profile_text_color= Column(String)
     profile_use_background_image= Column(Boolean)
     protected= Column(Boolean)
-    screen_name= Column(String)
+    screen_name= Column(String, index=True, unique=True)
     show_all_inline_media= Column(Boolean)
     statuses_count = Column(Integer)
     time_zone= Column(String)
@@ -143,7 +143,7 @@
 class Hashtag(Base):
     __tablename__ = "tweet_hashtag"
     id = Column(Integer, primary_key=True)
-    text = Column(String, unique = True)
+    text = Column(String, unique = True, index = True)
     def __init__(self, **kwargs):
         for key, value in kwargs.items():
             if hasattr(self,key):
@@ -204,7 +204,7 @@
                 
 def setup_database(*args, **kwargs):
         
-    create_all = True        
+    create_all = True
     if "create_all" in kwargs:
         create_all = kwargs["create_all"]
         del(kwargs["create_all"])
--- a/script/lib/iri_tweet/utils.py	Wed Jul 27 12:29:02 2011 +0200
+++ b/script/lib/iri_tweet/utils.py	Wed Jul 27 17:23:16 2011 +0200
@@ -116,7 +116,7 @@
         if user_id:
             user = self.session.query(User).filter(User.id == user_id).first()
         else:
-            user = self.session.query(User).filter(User.screen_name == user_name).first()
+            user = self.session.query(User).filter(User.screen_name.ilike(user_name)).first()
     
         if user is not None:
             return user
@@ -134,11 +134,17 @@
             except Exception as e:
                 logging.info("get_user : TWITTER ERROR : " + repr(e)) #@UndefinedVariable
                 logging.info("get_user : TWITTER ERROR : " + str(e)) #@UndefinedVariable
+                return None
     
         user_dict = adapt_fields(user_dict, fields_adapter["stream"]["user"])
         if "id" not in user_dict:
             return None
         
+        user = self.session.query(User).filter(User.id == user_dict["id"]).first()
+        
+        if user is not None:
+            return user
+        
         user = User(**user_dict)
         
         self.session.add(user)
@@ -162,8 +168,8 @@
             text = ind.get("text", ind.get("hashtag", None))
             if text is None:
                 return None 
-            hashtag = self.session.query(Hashtag).filter(Hashtag.text == text).first()
-            if not hashtag:
+            hashtag = self.session.query(Hashtag).filter(Hashtag.text.ilike(text)).first()
+            if hashtag is None:
                 ind["text"] = text
                 hashtag = Hashtag(**ind)
                 self.session.add(hashtag)