今回はテーブルのデータの更新と削除をやります。
データを更新するため、SimpleDB クラスに update 関数を定義します。
引数には table: テーブル名、更新データを辞書型、conditions: 条件を渡します。
関数内では、引数を基にして “UPDATE table SET field = value, …” という SQL 文を組み立てます。
UPDATE が成功すると、影響のあった行数を返し、失敗した場合は、None を返します。
def update(self, table, data, conditions): sql = "UPDATE %s" % table bind = [] if data is not None and len(data) > 0: # Build fields delim = "" sql += " SET " for field, value in data.iteritems(): sql += "%s `%s` = " % (delim, field) sql += "%s" bind.append(value) delim = "," if conditions is not None and len(conditions) > 0: sql += " WHERE " delim = "" for field, value in conditions.iteritems(): if value is None: sql += "%s `%s` IS NULL" % (delim, field) else: sql += "%s `%s` = " % (delim, field) sql += "%s" bind.append(value) delim = " AND" if self.__cursor is not None: self.__cursor.execute(sql, bind) self.__connection.commit() # Return rows affected. return self.__cursor.rowcount return None ## End def update
次に、このテーブルからデータを削除するため、delete 関数を定義します。
引数には table: テーブル名、conditions: 条件を指定する辞書型を渡します。
関数内では、引数を基にして “DELETE FROM table WHERE filed = value AND …” という SQL 文を組み立てます。
DELETE が成功すると、影響のあった行数を返し、失敗した場合は、None を返します。
def delete(self, table, conditions): result = None sql = "DELETE FROM %s" % table bind = [] if conditions is not None and len(conditions) > 0: sql += " WHERE " delim = "" for field, value in conditions.iteritems(): if value is None: sql += "%s `%s` IS NULL" % (delim, field) else: sql += "%s `%s` = " % (delim, field) sql += "%s" bind.append(value) delim = " AND" if self.__cursor is not None: self.__cursor.execute(sql, bind) self.__connection.commit() # Return rows affected. return self.__cursor.rowcount return None ## End def delete ## End class
コメントを残す