使用for循环遍历sqlalchemy数据库将进入无限循环

2024-05-29 00:26:29 发布

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

我班上有两节课型号.py(用户和日记)。用户包含有关用户的详细信息,日记包含带有注释的情感。当我试着用一个用户对象(一个使用for循环的列表)遍历日记时,它在无限循环中运行,并没有显示结果

你知道吗型号.py你知道吗

from datetime import date
from flaskblog import db, login_manager
from flask_login import UserMixin

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

class User(db.Model, UserMixin):
    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)
    password = db.Column(db.String(60), nullable=False)
    diaries = db.relationship('Diary', backref='author', lazy=True)


    def __repr__(self):
        return f"User('{self.username}', '{self.email}')"


class Diary(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    diary_date= db.Column(db.DateTime, nullable=False, default=date.today())
    emotion = db.Column(db.String(10))
    note = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Diary('{self.diary_date}', '{self.emotion}','{self.note}')"

你知道吗路线.py我用日记的地方

@app.route("/account", methods=['GET', 'POST'])
@login_required
def account():
    diaries=Diary.query.all()
    form = UploadImage()
    #picture_file=save_picture(form.picture.data)
    if request.method == 'POST':
        file = request.files[form.picture.name]
        note=Diary(diary_date=date.today(), note=form.note.data, author=current_user)
        db.session.add(note)
        db.session.commit()
        if file:
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.root_path, 'static/pics', filename))
            image_file = url_for('static', filename='pics/' + filename)
            return render_template('account.html', title='Account',image_file=image_file, form=form)
            #filename = 'http://localhost:5000/account' + filename
            #return render_template('account.html', filename = filename,form=form)

    return render_template('account.html', title='Account',form=form)

你知道吗帐户.html你知道吗

{% for diary in diaries %}
         <div class="article-metadata">
              <h2>{{ diary.author.username }}</h2>
              <h2>{{ diary.diary_date.strftime('%Y-%m-%d') }}</h2>
              <h2>{{ diary.emotion }}</h2>
              <h2>{{ diary.note }}</h2>
            </div>
    {% endfor %}

在这之后,屏幕上什么也不会打印。我尝试使用cmd和db上的相同循环。它是无限循环的

>>> user
User('hannah baker', 'baker.hannahkillme@gmail.com')
>>> diaries=Diary.query.all()
>>> diaries
[Diary('2019-01-28 00:00:00', 'None','Nothing specific happened today'), Diary('
2019-01-28 00:00:00', 'None','Day spent well'), Diary('2019-01-28 00:00:00', 'None','My college sucks')]
>>> for diary in diaries:
...     print(diary.note)
...

它应该打印我的笔记


Tags: selfformiddbdatereturncolumnh2

热门问题