Flask-SQLAlchemy - 检索Query.all() - 每行中的所有列

问题描述 投票:1回答:1

我正在使用flask_SQLAlchemy和Postgres DB运行Flask应用程序。

我想打印()使用query.all()检索的行的所有列值

我已经阅读了这篇文章,但我无法找回我正在寻找的内容。 https://docs.sqlalchemy.org/en/13/orm/query.html虽然我是Alchemy的新手。

# the class model
class Users(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String, nullable=False)
    hash = db.Column(db.String, nullable=False)
    reg_date = db.Column(db.DateTime, nullable=False)
    enabled = db.Column(db.Boolean, nullable=False

# Query all users
users = Users.query.all()

# try to iterate
for row in users:
    print(row.all())
actual results:
before loop: 
    >>> <Users 1>, <Users 2>, <Users 3>, <Users 4>
after loop: 
    >>> error all() doesn't apply to row

expected result, not achieved:
    >>>
    {id="1", username="yyy", hash="xxx", reg_date"zzz", enabled"yyy"}   
    ....
    {id="n", username="ttt", hash="nnn", reg_date"jjjj", enabled"oooo"}
python flask-sqlalchemy
1个回答
0
投票

all用于获取所有记录,然后您应该使用列名进行显示或其他任何您想要做的事情:

users = Users.query.all()

for user in users:
    print(user.username)
    print(user.reg_date)
    print(f"<id={user.id}, username={user.username}>")

为了获得所需的结果,即打印所有用户的列表,您可以打印users变量:

print(users)

您应该注意users列表包含Users对象,因此打印列表实际上将转储它们的表示 - 如果您想控制这些对象的显示方式,您可以在__repr__模型(对象)中使用Users方法:

def __repr__(self):
   return f"<id={self.id}, username={self.username}>"
© www.soinside.com 2019 - 2024. All rights reserved.