如何将 sqlite 数据库值传递给控制器

How to pass sqlite db values to controller

sqlite、web2py 新手。我正在尝试将 sqlite 数据库内容复制到控制器以实现另一个功能。 我的代码是这些: db.py

auth.define_tables(username=False, signature=False)

auth.settings.registration_requires_verification = False
auth.settings.registration_requires_approval = False
auth.settings.reset_password_requires_verification = True

db.define_table('chat',
        Field('me_from'),
        Field('me_body', 'text'),

默认值:

@auth.requires_login()
def index():
    chats.index(db)    
    body = db.chat.me_body()    
    rows = db(db.chat.me_body).select()#(orderby=~db.chat.me_body.created_on)    
    form1 = [body]    
    form5 = form1#.split()    
    name3 = ' '.join(form5)

我想检索发布到数据库的字符串..

    chat.id chat.me_from    chat.me_body    chat.me_html
1                      
2       maurice         hi              <div class="m...
3       maurice         whats up        <div class="m...
4       maurice         where are you.  <div class="m...
5       maurice         3i5ejp[eoityjdt <div class="m...
6       maurice         how are you d...<div class="m...
7       maurice         britam          <div class="m...

从上面的 table 中,我想从 chat.me_body 中检索发布的单词,例如 'hi'、'whats up'、'britam'...默认功能。相反,我不断收到以下错误: 如果我使用: body = db.chat.me_body() 错误是:

TypeError: 'Field' object is not callable

如果我使用:

`body = db.chat.me_body

错误是:

TypeError: sequence item 0: expected string, Field found

如果我使用行:

rows = db(db.chat.me_body).select()

form1 = [rows]

错误是:

name3 = ' '.join(form5)
TypeError: sequence item 0: expected string, Rows found

我会感谢你的帮助

查询从数据库中获取记录的正确方法是:

rows = db(db.chat).select(db.chat.me_body, db.chat.created_on,
                          orderby=~db.chat.created_on)

注意,对于查询 db(db.chat.id != None)(即选择 table 中的所有记录),db(db.chat) 是 shorthand。

然后,要仅将 me_body 字段值提取到列表中,您可以使用列表理解:

me_body_values = [r.me_body for r in rows]

最后,您可以将这些值连接在一起:

name3 = ' '.join(me_body_values)