首页 > 解决方案 > Flask-SQLalchemy 错误说我的表没有名为 x 的列

问题描述

我只是想创建一个简单的数据库,添加一个单词,打印它,然后删除它,但是我收到一条我无法理解的错误消息。

错误信息:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table post has no column named word
[SQL: INSERT INTO post (word) VALUES (?)]
[parameters: ('Cheese 0',)]
(Background on this error at: http://sqlalche.me/e/13/e3q8)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    word = db.Column(db.String(10))


def create_db():
    db.create_all()

    for x in range(5):
        p = Post(word='Cheese ' + str(x))
        db.session.add(p)
        db.session.commit()

提供的链接。我是 Flask 和 SQLalchemy 的新手;我无法完全弄清楚这些信息试图对我说什么。

标签: pythonsqliteflasksqlalchemyflask-sqlalchemy

解决方案


你错过了db.session.commit()

def create_db():
    db.create_all()
    db.session.commit()

    for x in range(5):
        p = Post(word= f'Cheese {x}')
        db.session.add(p)
        db.session.commit()

推荐阅读