[英]flask/sqlalchemy - OperationalError: (sqlite3.OperationalError) no such table
[英]How do I solve a Flask error '((sqlite3.OperationalError) no such table:)' when attempting to read from a database following a popular Flask tutorial?
我首先遵循了本教程: https://python-adv-web-apps.readthedocs.io/en/latest/flask_db1.html哪個有效(我得到了一個帶有 output 'It Works' 的網站)
然后我嘗試按照后續教程進行操作: https://python-adv-web-apps.readthedocs.io/en/latest/flask_db2.html
但是,我現在收到錯誤消息:'((sqlite3.OperationalError) 沒有這樣的表:)'
這源於以下代碼:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
#from sqlalchemy.sql import text
app=Flask(__name__)
db_name='Monsters.db'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + db_name
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# this variable, db, will be used for all SQLAlchemy commands
db = SQLAlchemy(app)
class Creature(db.Model):
__tablename__ = 'Creatures'
ID = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.Text)
AC = db.Column(db.Integer)
HP = db.Column(db.Integer)
@app.route('/')
def index():
try:
Creatures = Creature.query.order_by(Creature.Name).all()
print(Creatures)
sock_text = '<ul>'
for Monster in Creatures:
sock_text += '<li>' + Creatures.Name + '</li>'
sock_text += '</ul>'
return sock_text
except Exception as e:
# e holds description of the error
error_text = "<p>The error:<br>" + str(e) + "</p>"
hed = '<h1>Something is off.</h1>'
return hed + error_text
if __name__ == '__main__':
app.run(debug=True, port=5000)
我在 DB Browser (SQLite) 中檢查了我的表,所有名稱都是正確的。 我還查看了代碼生成的實例文件夾。 它也有一個 Monsters.db 文件,但使用 DB Browser 打開它只會給出一個空文件夾; 雖然用實際的 Monsters.db 文件替換它會給出錯誤“'list'object 沒有屬性'Name'”,但這感覺像是我不應該做的事情。
當用實際的 Monsters.db 文件替換它時會出現錯誤“'list' object 沒有屬性'Name'”
for Monster in Creatures:
sock_text += '<li>' + Creatures.Name + '</li>'
大概那應該是Monster.Name
,而不是Creatures.Name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.