我的cron作业的目标是将带有时间戳的推文保存到Google App Engine的数据存储中。我一直无法弄清楚如何以时间戳形式保存数据(它目前保存为一个字符串)。理想情况下,我想将它保存为DateTimeProperty,以便更方便地对输入条目进行排序。还有特别是我挣扎了两个问题:如何将时间戳插入到GQL DateTimeProperty()?
- 正确使用time.mktime(),并
- 把正确格式化值到GQL
该油田在格式化像这样JSON:
s = "Wed, 20 Mar 2013 05:39:25 +0000"
我试图用datetime模块来解析这个字符串:
timestr = datetime.datetime.strptime(s, "%a, %b %Y %d %H:%M:%S +0000")
when = datetime.fromtimestamp(time.mktime(timestr))
概括了一切,这是我的cron.py文件的一个片段:
result = simplejson.load(urllib.urlopen(twitterurl))
for item in result['results']:
g = ""
try:
g = simplejson.dumps(item['geo']['coordinates'])
except:
pass
timestr = datetime.datetime.strptime(str(item['created_at']), "%a, %b %Y %d %H:%M:%S +0000")
when = datetime.fromtimestamp(time.mktime(timestr))
tStore = TweetsFromJSON(user_id=str(item['from_user_id']),
user=item['from_user'],
tweet=unicodedata.normalize('NFKD', item['text']).encode('ascii', 'ignore'),
timestamp=when,
iso=item['iso_language_code'],
geo=g
)
用于数据存储的模式将是:
class TweetsFromJSON(db.Model):
user = db.TextProperty()
user_id = db.TextProperty()
tweet = db.TextProperty()
timestamp = db.DateTimeProperty()
iso = db.StringProperty()
geo = db.StringProperty()