Hi I am trying to use cPickle to store data in the database when I try to
load the pickle data later I am getting the following error:

Traceback (most recent call last):
  File "/home/bruce/Development/bossteam_dev/projects/yaw/gluon/restricted.py",
line 204, in restricted
    exec ccode in environment
  File 
"/home/bruce/Development/bossteam_dev/projects/yaw/applications/welcome/controllers/adviewer.py"
<http://127.0.0.1:8000/admin/edit/welcome/controllers/adviewer.py>,
line 134, in <module>
  File "/home/bruce/Development/bossteam_dev/projects/yaw/gluon/globals.py",
line 172, in <lambda>
    self._caller = lambda f: f()
  File "/home/bruce/Development/bossteam_dev/projects/yaw/gluon/tools.py",
line 2533, in f
    return action(*a, **b)
  File 
"/home/bruce/Development/bossteam_dev/projects/yaw/applications/welcome/controllers/adviewer.py"
<http://127.0.0.1:8000/admin/edit/welcome/controllers/adviewer.py>,
line 61, in viewads
    ads_to_view = adviewer_engine.getUrls()
  File "applications/welcome/modules/adviewer_api.py", line 43, in getUrls
    ads_viewed = cPickle.load(today_ads.adsviewed)
TypeError: argument must have 'read' and 'readline' attributes


Here is my code for storing:

ads = []
            random_ads = self._getRandomUrls([])
            if random_ads:
                for index, url in enumerate(random_ads):
                    ads.append({
                        'index': index,
                        'id': url['id'],
                        'url': url['url'],
                        'valid': '',
                        'suburlcount': '',
                        'viewcanceled': '',
                        'timestart': '',
                        'timeend': '',
                        'rating': ''
                    })
            ads_to_view = cPickle.dumps(ads)

            # Create todays ads to view
            self.db.viewedads.insert(member_id=member, date=date,
adsviewed=ads_to_view)

Now when I try to use cPickle.loads() that is where I get the error above:

today_ads = self.db(self.db.viewedads.member_id == member, date ==
date).select().first()ads_viewed = cPickle.load(today_ads.adsviewed)

print today_ads.adsviewed # This works as expected shows the cPickle data


Is there something I am missing to get this to work with web2py?


-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.warplydesigned.com
http://www.fitnessfriendsfinder.com

Reply via email to