Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无效的炼金术。Can';t制作SQLite表格_Python_Sqlite_Flask_Flask Sqlalchemy - Fatal编程技术网

Python 无效的炼金术。Can';t制作SQLite表格

Python 无效的炼金术。Can';t制作SQLite表格,python,sqlite,flask,flask-sqlalchemy,Python,Sqlite,Flask,Flask Sqlalchemy,我不熟悉flask和SQLite,对它们的工作原理知之甚少 Models.py from datetime import datetime from flaskblog import db, login_manager from flask_login import UserMixin @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) class User(

我不熟悉flask和SQLite,对它们的工作原理知之甚少

Models.py

from datetime import datetime
from flaskblog import db, login_manager
from flask_login import UserMixin


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"


class PostIntmath(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
这些是我定义的模型

我不知道为什么这是错误的,但它给了我无效的请求

sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class User->user'. Original exception was: When initializing mapper mapped class User->user, expression 'Post' failed to locate a name ("name 'Post' is not defined"). If this is a class name, consider adding this relationship() to the <class 'flaskblog.models.User'> class after both dependent classes have been defined.
sqlalchemy.exc.InvalidRequestError:一个或多个映射程序未能初始化-无法继续初始化其他映射程序。触发映射器:“映射类用户->用户”。最初的异常是:初始化映射器映射类User->User时,表达式“Post”未能找到名称(“未定义名称“Post”)。如果这是类名,那么在定义了两个依赖类之后,考虑将此关系()添加到类中。
我的整个项目在
救命啊

声明关系时,必须使用与类定义中显示的类名完全相同的类名

SQL Alchemy找不到“Post”的原因是您使用的名称是“PostIntmath”

换行

posts=db.relationship('Post',backref='author',lazy=True)

posts=db.relationship('PostIntmath',backref='author',lazy=True)
你的错误就会消失

SQL alchemy允许您以这种方式定义带有字符串的映射关系类,以便这些类可以位于单独的文件中,并且仍然可以在不需要导入的情况下工作。在后台,库会查找与
db
对象关联的所有表,并尝试查找与您提供的关系字符串名称匹配的表