簡體   English   中英

按照流行的 Flask 教程嘗試從數據庫中讀取時,如何解決 Flask 錯誤“((sqlite3.OperationalError)沒有這樣的表:)”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM