SQLAlchemy 如何查询对应 email 记录的其他字段信息

flask-sqlalchemy

#1

想要实现的功能是输入邮箱,查询是否存在邮箱,如果存在,返回邮箱相关信息,如果不存在提示“不存在”


Model代码

数据库表内容

问题:通过执行代码,想查询到邮箱对应的phone、email、role等数据,并返回到前端, 但是代码执行结果只返回了一个邮箱地址,请教该如何写去查询?


#2

纯代码文本或命令行输出建议使用代码块格式化,请不要使用图片上传。

插入代码块的方式:除了将所有代码缩进四格,更方便的插入代码块方式是使用三个连续的反引号作为开始和结束标记,比如:

```
def hello():
    return ‘Hello World’
```

会被渲染为:

 def hello():
     return 'Hello World'

具体请看置顶帖子 技术提问帖发帖规则(创建提问帖前必读)


#3

你那段查询代码(不能复制我懒得手写了)返回的不是邮箱地址,而是对应的模型(Model),

首先你把最后的all()换为first(),然后再试试打印user.email

...filter(...).first()
print(user.email)

使用print打印flask-sqlalchemy的Model时,默认是<模型名称 主键>格式。

你可以覆写__repr__方法修改

class (db.Model):
    def __repr__(self):
        return f'{self.email}'  # Python36+ Support

#4

好的,下次一定严格按照要求直接使用代码块的方式,把问题说的更清楚。

问题已经解决,使用first()之后,打印user.email等参数可以。

还有个问题,all()不是返回所有查询到的所有数据么?为什么不可以打印出来对应的参数呢?类似user.name这种。


#5

all()也可以的。只不过返回的是一个队列,你需要这样

users = User.query.all()
for user in users:
    print(user.name)

#6

非常感谢,问题解决。