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项目中获取数据库表的数据记录总数
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 楼有意思的网站,见识到了
6666

