访问对象值

2024-09-29 18:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个基于Flask、SQLAlchemy和Jinja2的web应用程序,但在使用SQLAlchemy进行连接时,我无法获得对象值。例如,在我的models.py中有两个类似的对象:

def user:
    id = dbcolumn (integer )
    username =dbcolumn (varchar(whatever))
    local_id = dbcolumn(integer)

def local:
    id = dbcolumn (integer )
    local_name =dbcolumn (varchar(whatever))   

在我的routes.py文件中,如果我这样做:

    qry = User.query.filter(id=1)
    usertoshow = qry.first()
    print(usertoshow)
    ...
    return render_template('editaruser.html', form=form, user=userupd)

打印结果将返回类似<User James>的内容。如果我想用Jinja在HTML中显示结果,我只需执行{{ user.username }}即可正确显示数据,尽管我需要执行几个连接来收集所有需要的数据。例如,当我执行连接时,如:

    qry = db.session.query(User, Local).join(Local, (Local.id==User.user_local_id))
    print(qry)
    userupd = qry.first()
    print(userupd)

打印返回的查询(qry)为

    SELECT user.id AS user_id, user.username AS user_username, user.user_nome AS user_user_nome, user.email AS user_email, user.password_hash AS user_password_hash, user.user_local_id AS user_user_local_id, user.user_terapeuta_id AS user_user_terapeuta_id, user.user_date_crea AS user_user_date_crea, user.user_created_by AS user_user_created_by, user.user_last_login AS user_user_last_login, user.user_activo AS user_user_activo, local.id AS local_id, local.local_nome AS local_local_nome
    FROM user INNER JOIN local ON local.id = user.user_local_id

第二次打印的结果是

(<User Jamesdean>, <Local Somewhere in the world>)  

我以为我正在创建某种可以在Jinja2中调用的对象,比如:

    <td>Username:</td><td>{{ user.username }} {{ user.local_nome }}</td>

但是它返回的是空的,并且没有返回任何错误,只是一个空格,在我加入之前它曾经是用户名

如何获取从此处的查询中检索到的数据:(<User Jamesdean>, <Local Somewhere in the world>)


Tags: 对象idlocalasusernameintegertdprint

热门问题