使用Flask-SQLAlchemy填充数据库时为什么会出现UnmappedInstanceError?

gro*_*zek 2 python orm sqlalchemy flask flask-sqlalchemy

我是SQLAlchemy的新手,我正在使用Flask-SQLAlchemy作为我当前的项目.我收到一个让我难过的错误:

sqlalchemy.orm.exc.UnmappedInstanceError: Class 'flask_sqlalchemy._BoundDeclarativeMeta' is not mapped; was a class (app.thing.Thing) supplied where an instance was required?
Run Code Online (Sandbox Code Playgroud)

我已经尝试改变实例中的符号,并移动一些东西.问题可能与这个问题或其他问题有关吗?

这是我的module(thing.py),其类继承自Flask-SQLAlchemy db.Model(如SQLAlchemy的Base类):

from app import db

class Thing(db.Model):
    indiv_id = db.Column(db.INTEGER, primary_key = True)
    stuff_1 = db.Column(db.INTEGER)
    stuff_2 = db.Column(db.INTEGER)
    some_stuff = db.Column(db.BLOB)

    def __init__():
        pass
Run Code Online (Sandbox Code Playgroud)

这是我在thing_wrangler.py模块中填充数据库的调用:

import thing
from app import db

def populate_database(number_to_add):
    for each_thing in range(number_to_add):
        a_thing = thing.Thing
        a_thing.stuff_1 = 1
        a_thing.stuff_2 = 2
        a_thing.some_stuff = [1,2,3,4,5]
        db.session.add(a_thing)
    db.session.commit()
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 6

您需要创建模型的实例.a_thing = thing.Thing应该是,而不是a_thing = thing.Thing().请注意括号.由于你覆盖了__init__,你还需要修复它,因此它需要self作为第一个参数.