如何将sqlite db值传递给控制器

时间:2017-03-30 05:33:59

标签: html sqlite web2py

新手在sqlite,web2py。我试图将sqlite db内容复制到控制器以获取另一个函数。 我的代码是: 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)

我想检索一个发布到db ..

的字符串
    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...

从上面的表格中,我想从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

我感谢你的帮助

1 个答案:

答案 0 :(得分:1)

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

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

注意,db(db.chat)是查询db(db.chat.id != None)的简写(即选择表中的所有记录)。

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

me_body_values = [r.me_body for r in rows]

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

name3 = ' '.join(me_body_values)