python - 使用 SQLAlchemy 显示所有表
问题描述
我正在尝试使用 SQLAlchemy 从数据库中检索所有表数据。我写了我的代码,对我来说似乎没问题,但我无法检索所需的列:书名、作者、出版商等列。可能我在我的代码上犯了一个错误,但找不到它。请寻求您的帮助。
应用程序.py
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from addBook import Books
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://///Users/myUser//flaskProject/flasktestdb.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
@app.route("/bookshelves")
def bookshelves():
books = Books.query.all()
return render_template("bookshelves.html", books=books)
if __name__ == '__main__':
db.create_all()
app.run()
addBook.py(书籍类)
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://///Users/myUser//flaskProject/flasktestdb.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Books(db.Model):
id = db.Column('book_id', db.Integer, primary_key=True)
bookname = db.Column(db.String(50))
author = db.Column(db.String(80))
publisher = db.Column(db.String(80))
category = db.Column(db.String())
pagenumber = db.Column(db.Integer())
status = db.Column(db.String())
def __init__(self, bookname, author, publisher, category, pagenumber, status):
self.bookname = bookname
self.author = author
self.publisher = publisher
self.category = category
self.pagenumber = pagenumber
self.status = status
书架.html
{% extends "layout.html" %}
{% block title %}Book Shelves{% endblock %}
{% block body %}
<h3>Book Shelves</h3>
<hr>
<div class="card-columns">
{% for book in books %}
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">{{ book.bookname }}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{ book.author }}</h6>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Publisher: {{ book.publisher }}</li>
<li class="list-group-item">Category: {{ books.category }}</li>
<li class="list-group-item">Page Number: {{ book.pagenumber }}</li>
<li class="list-group-item">Status: {{ book.status }}</li>
</ul>
<div class="card-body">
<a href="#" class="card-link">Edit Book</a>
<a href="#" class="card-link">Delete Book</a>
</div>
</div>
{% endfor %}
</div>
{% endblock body %}
解决方案
The import model needs to be stated after the db instantiation. Try this
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://///Users/myUser//flaskProject/flasktestdb.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
from addBook import Books
推荐阅读
- powershell - 如何更新特定 cmdlet 的帮助?
- cordova - 为什么使用 apache cordova 为 android 签名应用程序失败?
- c - 为什么具有递减阶段的冒泡排序不起作用?
- python - 如何在 3D 列表中弹出元素?
- python - 如何在图形(django python)中循环[('A',1),('B',2),('C',4)]这种类型的数据?
- flutter - 如何在flutter中添加ExpansionPanels之间的间隙?
- python - 根据日期列差异过滤熊猫数据框
- amazon-web-services - AWS Aurora Mysql 故障转移
- c# - Azure.Messaging.ServiceBus SendMessageAsync 每 2 分钟超时一次?
- json - Azure 管道 API 调用门成功标准评估