С Python, SQLite и HTML, как я могу читать из базы данных и печатать на странице? - PullRequest
1 голос
/ 31 марта 2012

Я новичок в SQLite, поэтому, пожалуйста, потерпите меня, если то, что я собираюсь спросить, кажется глупым.

В настоящее время у меня есть база данных под названием «Статус» с двумя столбцами «штамп» и «сообщения». «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

Я не совсем уверен, что это значит, я предполагаю, что это говорит о том, что тип между «output» и «row» не совпадает. Однако, то, что 'строка' должна читать, это столбец 'messages' базы данных 'status', которая является строкой, а 'output' также является строкой. Так что я не знаю, что происходит, и мне интересно, может ли кто-нибудь помочь?

1 Ответ

2 голосов
/ 31 марта 2012

Пока вы запрашиваете только один столбец, SQLite также поддерживает запросы для нескольких столбцов.Однако для согласованности Python всегда помещает их в кортеж.Вы, вероятно, хотите получить первый элемент кортежа, который будет строкой:

output = output + row[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...