python
  • datetime
  • psql
  • web.py
  • 2015-12-22 80 views 0 likes 
    0

    我一直在關注這個基本的博客設置與Webpy:使用基本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,但是我不確定e如何讓這個工作在model.py文件中,或者如果我需要導入datetime仍然。

    當我嘗試運行它是以上並進入/新在我的本地主機我得到這個錯誤信息:

    global name 'timestamp' is not defined 
    

    我試圖在PSQL模式變更的類型,只是「日期」但仍然有同樣的問題,不知道還有什麼要做。

    回答

    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())來代替。

    +0

    非常感謝你! –

    +0

    所以我現在得到這個錯誤,只要我點擊提交後寫一個測試職位在/新 列「posted_on」是時區類型的時間戳,但表達式是數值型的線1: ...試試(content,posted_on,title)VALUES('test',1450833444 ... ^提示:您將需要重寫或轉換表達式 Python \t /usr/local/lib/python2.7/site -packages/web/db.py in _db_execute,line 586 Web \t POST http:// localhost:8080/new –

    +0

    'test'是我試圖在那裏提交的測試帖子,我不知道我需要重寫什麼表達式,這是否意味着在psql中的表達?我一直在閱讀關於時間戳的文檔,並從我的理解只是做'posted_on TIMESTAMP WITH TIMEZONE'應該工作(我認爲) –

    相關問題