Changeset 162:ca1529c62df9 for classifier/storage.py
- Timestamp:
- 08/21/07 19:12:16 (11 months ago)
- Files:
-
- 1 modified
-
classifier/storage.py (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
classifier/storage.py
r159 r162 25 25 lang = Table('classifier_lang', _metadata, 26 26 Column('iso', String(3), primary_key=True), 27 Column('user', String(40) ))27 Column('user', String(40), primary_key=True)) 28 28 29 29 word = Table('classifier_word', _metadata, … … 31 31 Column('lang_iso', String(3), ForeignKey('classifier_lang.iso')), 32 32 Column('count', Integer), 33 Column('user', String(40) )33 Column('user', String(40), primary_key=True) 34 34 ) 35 35 … … 37 37 Column('name', String(50), primary_key=True), 38 38 Column('description', String(300)), 39 Column('user', String(40) ))39 Column('user', String(40), primary_key=True)) 40 40 41 41 42 42 word_category = Table('classifier_word_category', _metadata, 43 Column('id', Integer, primary_key=True),43 #Column('id', Integer, primary_key=True), 44 44 Column('word_value', String(200), 45 ForeignKey('classifier_word.value') ),45 ForeignKey('classifier_word.value'), primary_key=True), 46 46 Column('count', Integer), 47 47 Column('category_name', String(50), 48 ForeignKey('classifier_category.name') ),49 Column('user', String(40) ))48 ForeignKey('classifier_category.name'), primary_key=True), 49 Column('user', String(40), primary_key=True)) 50 50 51 51 … … 151 151 sel = word.select(and_(word.c.value==the_word, 152 152 word.c.user==self._user)) 153 selection = sel.execute().fetch all()153 selection = sel.execute().fetchone() 154 154 cat_insert = word_category.insert() 155 155 156 157 if len(selection) == 0: 156 if selection is None: 158 157 # new word, let's add it 159 158 res = word.insert().execute(value=the_word, count=1, … … 169 168 res = word.update(and_(word.c.value==the_word, 170 169 word.c.user==self._user)) 171 res.execute(count=selection [0].count+1)172 173 sl = and_(word_category.c.word_value==the_word,174 word_category.c.user==self._user)175 cat = word_category.select(sl)176 cat = cat.execute().fetchall()170 res.execute(count=selection.count+1) 171 172 #sl = and_(word_category.c.word_value==the_word, 173 # word_category.c.user==self._user) 174 #cat = word_category.select(sl) 175 #cat = cat.execute().fetchall() 177 176 178 177 #for old_cat in cat: … … 185 184 # word_category.delete(sl).execute() 186 185 186 existing_cats = self.list_categories() 187 187 for category in categories: 188 188 # let's check if the category exists in category 189 if category not in self.list_categories():189 if category not in existing_cats: 190 190 self.add_category(category) 191 191 … … 194 194 word_category.c.word_value==the_word) 195 195 cat = word_category.select(sl) 196 cat = cat.execute().fetchall() 197 198 if cat == []:196 197 cat = cat.execute().fetchone() 198 if cat is None: 199 199 cat_insert.execute(word_value=the_word, 200 200 category_name=category, … … 202 202 203 203 else: 204 cat_count = cat[0].count205 id_ = cat[0].id206 up = word_category.update(word_category.c.id==id_)207 up.execute(count=cat _count+1)204 up = word_category.update(and_(word_category.c.user==cat.user, 205 word_category.c.word_value==cat.word_value, 206 word_category.c.category_name==cat.category_name)) 207 up.execute(count=cat.count+1) 208 208 209 209 … … 213 213 selection = and_(word_category.c.word_value == word_value, 214 214 word_category.c.user==self._user) 215 catwords = word_category.select(selection).execute().fetchall() 215 216 catwords = word_category.select(selection).execute() 217 216 218 word_sel = and_(word.c.value == word_value, 217 word_category.c.user==self._user) 219 word.c.user==self._user) 220 218 221 langs = [the_word.lang_iso for the_word in 219 word.select(word_sel).execute() .fetchall()]222 word.select(word_sel).execute()] 220 223 221 224 cats = {} … … 240 243 """Remove a word""" 241 244 sl = and_(word.c.value==the_word, word.c.user==self._user) 242 results = word.select(sl).execute().fetchall()243 244 if len(results) == 0:245 the_word = word.select(sl).execute().fetchone() 246 247 if the_word is None: 245 248 return None 246 247 the_word = results[0]248 249 249 250 # picking up categorized words to work with 250 251 if categories is None: 251 252 sl = word_category.c.word_value == the_word.value 252 catwords = word_category.select(sl).execute(user=self._user) .fetchall()253 catwords = word_category.select(sl).execute(user=self._user) 253 254 else: 254 255 categories = _tuplify(categories) 255 sl = word_category.c.word_ id == word.id256 sl = word_category.c.word_value == the_word.value 256 257 sl2 = word_category.c.category_name.in_(*categories) 257 258 sl = and_(sl, sl2) 258 catwords = \ 259 word_category.select(sl).execute(user=self._user).fetchall() 259 catwords = word_category.select(sl).execute(user=self._user) 260 260 261 261 # remove categorized words … … 272 272 word_category.delete(sl).execute() 273 273 else: 274 rs = word_category.select(sl).execute().fetchall() 275 if rs != []: 274 rs = word_category.select(sl).execute().fetchone() 275 rs_count = rs.count 276 rs.close() 277 if rs is not None: 276 278 sl2 = word_category.update(sl) 277 sl2.execute(count=rs .count-1, user=self._user)279 sl2.execute(count=rs_count-1, user=self._user) 278 280 279 281 # remove empty categories 280 282 for category in categories: 281 sl = and_(word_category.c.category_name ==category,283 sl = and_(word_category.c.category_name==category, 282 284 word_category.c.user==self._user) 283 285 284 current_cat = word_category.select(sl).execute().fetchall() 285 if len(current_cat) > 0: 286 current_cat = current_cat[0] 286 current_cat = word_category.select(sl).execute().fetchone() 287 if current_cat is not None: 287 288 if current_cat.count == 0: 288 word_category.delete(sl).execute() 289 else: 290 # remove categories 291 sl = and_(word_category.c.word_value==the_word.value, 292 word_category.c.user==self._user) 293 word_category.delete(sl).execute() 289 current_cat.close() 290 word_category.delete(sl).execute() 291 #else: 292 # # remove categories 293 # sl = and_(word_category.c.word_value==the_word.value, 294 # word_category.c.user==self._user) 295 # word_category.delete(sl).execute() 294 296 295 297 # removing word if none use it 296 298 sl = and_(word.c.value==the_word.value, word.c.user==self._user) 297 298 #if word.select(sl).execute().fetchall()[0].count == 0: 299 word.delete(sl).execute() 299 if word.select(sl).execute().fetchone().count == 0: 300 word.delete(sl).execute() 300 301 301 302 def word_count(self, category=None, language=None): 302 303 303 if category is None: 304 304 if language is None: 305 305 sl = word.c.user == self._user 306 return len(word.select(sl).execute().fetchall()) 306 #return len(word.select(sl).execute().fetchall()) 307 return word.select(sl).count().execute().fetchone()[0] 307 308 else: 308 309 sl = and_(word.c.user == self._user, 309 310 word.c.lang_iso == language) 310 return len(word.select(sl).execute().fetchall()) 311 return word.select(sl).count().execute().fetchone()[0] 312 #return len(word.select(sl).execute().fetchall()) 311 313 else: 312 314 categories = _tuplify(category) 313 315 in_ = word_category.c.category_name.in_(*categories) 314 316 sl = and_(in_, word_category.c.user == self._user) 315 res = word_category.select(in_).execute() 316 return len(res.fetchall()) 317 return word_category.select(sl).count().execute().fetchone()[0] 318 #res = word_category.select(sl).execute() 319 #return len(res.fetchall()) 317 320 318 321
