Просмотр исходного кода

Add update method to the Table class

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@54639 15284696-431f-4ddb-bdfa-cd5b030d7da7
Pietro Zambelli 12 лет назад
Родитель
Сommit
c7f9a5c97a
1 измененных файлов с 17 добавлено и 4 удалено
  1. 17 4
      lib/python/pygrass/vector/table.py

+ 17 - 4
lib/python/pygrass/vector/table.py

@@ -211,7 +211,11 @@ class Columns(object):
                 odict[name] = ctype
             self.odict = odict
         values = ','.join(['?', ] * self.__len__())
+        kv = ','.join(['%s=?' % k for k in self.odict.keys()])
+        where = "%s=?" % self.key
         self.insert_str = sql.INSERT.format(tname=self.tname, values=values)
+        self.update_str = sql.UPDATE_WHERE.format(tname=self.tname,
+                                                  values=kv, condition=where)
 
     def sql_descr(self, remove=None):
         """Return a string with description of columns.
@@ -819,9 +823,9 @@ class Table(object):
 
     def __len__(self):
         """Return the nuber of rows"""
-        return self.num_rows()
+        return self.n_rows()
 
-    def num_rows(self):
+    def n_rows(self):
         cur = self.conn.cursor()
         cur.execute(sql.SELECT.format(cols='Count(*)', tname=self.name))
         number = cur.fetchone()[0]
@@ -851,6 +855,15 @@ class Table(object):
         except:
             raise ValueError("The SQL is not correct:\n%r" % sqlc)
 
-    def insert(self, values):
+    def insert(self, values, many=False):
         cur = self.conn.cursor()
-        return cur.execute(self.columns.insert_str, values)
+        if many:
+            return cur.executemany(self.columns.insert_str, values)
+        return cur.execute(self.columns.insert_str, values)
+
+    def update(self, key, values):
+        cur = self.conn.cursor()
+        vals = list(values)
+        vals.append(key)
+        print self.columns.update_str, vals
+        return cur.execute(self.columns.update_str, vals)