【问题标题】:Python 2.7 File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute 'username'Python 2.7 文件“<stdin>”,第 1 行,在 <module> AttributeError: 'list' object has no attribute 'username'
【发布时间】:2023-03-11 10:56:02
【问题描述】:

我正在学习使用 Flask 和 Python 的教程,现在使用 SQLAlchemy 和 SQLite 设置一个虚拟数据库。

我正在 Python 终端解释器中工作,并成功地从我的“用户”表类中创建了一条虚拟记录,如下所示:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20),unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False,)

然后我查询了“用户名”并从结果中创建了一个变量。当我使用这些数据时,我得到一个完全如下的错误(从终端复制):

>>> user_2 = User(username='Yuki', email='c@d.com', password='pass')
>>> db.session.add(user_2)
User.query.filter_by(username='Yuki').all()
[User('Yuki','c@d.com,'default.jpg')]
>>> Yuki = User.query.filter_by(username='Yuki').all()
>>> Yuki
[User('Yuki','c@d.com,'default.jpg')]
>>> Yuki.username
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'username'

如您所见,当我查询记录时,数据都在那里,但它不会返回此查询下的用户名属性。

我误解了语法吗?它清楚地正确注册和存储用户名。如果您能发现任何明显的东西,请告诉我,我希望这是一个简单的错误!提前感谢您的任何建议,我真的很喜欢设置它,并且很乐意继续。

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:
    >>> Yuki = User.query.filter_by(username='Yuki').all()
    >>> Yuki
    [User('Yuki','c@d.com,'default.jpg')]
    

    所以Yuki 是一个包含User 类型元素的列表。 (最好命名为yuki。)

    >>> Yuki.username
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'list' object has no attribute 'username'
    

    错误很明显:列表没有用户名。

    但列表有元素,在本例中是 1 个元素。 Yuki[0].username 应该给你你想要的。

    【讨论】:

    • 谢谢你这停止了错误并返回了用户名,但也返回了字符'u':>>> Yuki[0].username u'Yuki'
    • 我明白了! .all() 返回一个列表,所以我必须使用 []。本教程使用 .first(),这就是他们不定义数组位置的原因。感谢您清除此问题
    • @Andyjm 不是字符串中的字符,而是表示它是(unicode)字符串(py 2.x下)。
    猜你喜欢
    • 1970-01-01
    • 2014-07-13
    • 2015-09-26
    • 2022-01-10
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多