使用Python,SQLite和HTML,我如何从数据库中读取并打印到页面?

时间:2012-03-31 03:02:47

标签: python html database sqlite types

我是SQLite的初学者,所以如果我要问的话似乎很傻,请跟我说。

我目前有一个名为“Status”的数据库,有两列“stamp”和“messages”。 “messages”包含文本,“stamp”包含时间戳。

我想阅读此数据库的最后10个条目,并将它们显示到HTML页面。

我用来从数据库中读取的代码是:

@cherrypy.expose
def readStatus(self):
    con = lite.connect('static/database/Status.db')
    output = ""
    with con:    

        cur = con.cursor()    
        cur.execute("SELECT messages FROM Status ORDER BY stamp DESC LIMIT 5")
        print "The Status database now contains:"

        for row in cur:
            print row
            output = output + row

    return output

我用来将消息打印到HTML页面的代码是

@cherrypy.expose
def homepage(self):
    """Display the home page showing status update
    """
    page = get_file(staticfolder+"/html/homePage.html")
    page = page.replace("$STATUS", self.readStatus())
    return page

但是,我收到此错误消息:

File "proj1base.py", line 133, in homepage
    page = page.replace("$STATUS", self.readStatus())
  File "proj1base.py", line 305, in readStatus
    output = output + row
TypeError: cannot concatenate 'str' and 'tuple' objects

我不完全确定这意味着什么,我认为它说'输出'和'行'之间的类型不匹配。但是,'row'应该读取的是数据库'status'的'messages'列,它是一个字符串,'output'也是一个字符串。所以我不知道发生了什么,并且想知道是否有人可以提供帮助?

1 个答案:

答案 0 :(得分:2)

您只查询一列时,SQLite 支持查询多列。但是,为了保持一致性,Python 总是将它们放在一个元组中。你可能想得到元组的第一个元素,是一个字符串:

output = output + row[0]