【发布时间】:2021-11-23 21:20:25
【问题描述】:
我正在尝试使用 SQLAlchemy 从数据库中检索所有表数据。我编写了代码,对我来说似乎没问题,但我无法检索所需的列:书名、作者、出版商等列。可能我在我的代码上犯了一个错误,但找不到它。请寻求您的帮助。
app.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 %}
【问题讨论】:
-
无法检索特定列,或者根本无法检索任何数据?
db.create_all()的位置几乎肯定不是你想要的。 -
根本无法检索任何数据。
db.create_all()的位置已更正更改,但结果相同。还有其他帮助吗? -
是否有 .db 文件?如果有,用sqlite3命令打开,看看能不能手动查询数据。
-
当然,有.db文件,我可以通过sqlite3工具查询来检索所有数据。你能看出我的代码有问题吗?
-
另外唯一跳出来的就是
sqlite://///Users/...,可能需要sqlite:///Users/...(也就是去掉两个斜线)。
标签: python flask sqlalchemy