Python中如何在Flask项目中获取数据库表的数据记录总数


class Answer(db.Model): tablename = 'answer' id = db.Column(db.Integer, primary_key=True, autoincrement=True) content = db.Column(db.Text, nullable=False) question_id = db.Column(db.Integer,db.ForeignKey('question.id')) author_id = db.Column(db.Integer,db.ForeignKey('user.id')) create_time = db.Column(db.DateTime,default=datetime.now) question = db.relationship('Question',backref=db.backref('answers',order_by=id.desc())) author = db.relationship('User',backref=db.backref('answers'))


@app.route('/add_awswer/',methods=['POST']) def and_awser(): content = request.form.get('answer_content') question_id = request.form.get('question_id')

answer = Answer(content=content)
userId = session['user_id']

user = User.query.filter(User.id == userId).first() answer.author = user

question = Question.query.filter(Question.id == question_id).first() answer.question = question db.session.add(answer) db.session.commit() return redirect(url_for(‘detail’,question_id = question_id))


本人菜鸟,我想在模板中获取 Answer 模型中总共有多少条数据


Python中如何在Flask项目中获取数据库表的数据记录总数

6 回复

Answer.query.count()即可


在Flask项目里查表的总记录数,直接用SQLAlchemy的count()方法就行。假设你有个User模型对应users表,代码长这样:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///your_database.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)

# 查询总记录数
total_count = User.query.count()
print(f"Total users: {total_count}")

如果不用ORM,用原生SQL查也可以:

from sqlalchemy import text

with db.engine.connect() as conn:
    result = conn.execute(text("SELECT COUNT(*) FROM users"))
    total_count = result.scalar()
    print(f"Total users: {total_count}")

count()最直接。

一楼的写法似乎会构建一个嵌套查询。见 google 搜索结果的第一个链接的第二个回答的第一个评论。
以及: http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#counting

2 楼有意思的网站,见识到了

回到顶部