将日期时间或时间戳与基本webpy博客

时间:2015-12-22 05:47:13

标签: python datetime psql web.py

我一直在使用Webpy跟踪这个基本的博客设置:

http://webpy.org/src/blog/0.3

我的一切都完全相同所以我认为没有必要在这里发布我的代码,但是我使用的是Psql,因此我不得不对我的model.py进行一些更改,如下所示:

import web
import datetime

db = web.database(dbn="postgres", db='basic_blog', user='my_name')

def get_posts():
    return db.select('entries', order='id DESC')

def get_post(id):
    try:
        return db.select('entries', where='id=$id', vars=locals())[0]
    except IndexError:
        return None

def new_post(title, text):
    db.insert('entries', title=title, content=text, posted_on=timestamp)

def del_post(id):
    db.insert('entries', where='id=$id', vars=locals())

def update_post(id, title, text):
    db.update('entries', where='id=$id', vars=locals(),
        title=title, content=text)

当我创建模式时,我无法使用DATETIME,因为它似乎不在psql中,所以我使用了TIMESTAMP,但是我不确定如何在model.py文件中使用它或者如果我还需要导入日期时间。

当我尝试按原样运行它并转到我本地主机中的/ new时,我收到以下错误消息:

global name 'timestamp' is not defined

我尝试将psql架构中的类型更改为'date',但仍然遇到同样的问题,不知道还能做什么。

1 个答案:

答案 0 :(得分:1)

参数中的时间戳是您需要定义的变量。

def new_post(title, text):
    db.insert('entries', title=title, content=text, posted_on=timestamp)

所以相反:

import datetime
你可以:

import time

并在你的new_post函数中,在调用函数时生成一个新的时间戳:

def new_post(title, text):
    timestamp = time.time() # define the variable: timestamp
    db.insert('entries', title=title, content=text, posted_on=timestamp)

注意:time.time()会返回float对象,该对象可能代表毫秒,但如果您不关心毫秒,则可以使用int(time.time())代替。