Python Flask SQLite OperationalError при просмотре сообщений пользователя - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я следую этой серии учебника о том, как создать сайт с Flask, однако я сталкиваюсь с очень расстраивающей ошибкой, когда просто следую в точности тому, что делает парень. Сейчас у меня есть следующие настройки классов для доступа к базе данных:

class User(db.Model):
    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)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

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

class Post(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}')"

Затем, когда я захожу в командную строку, чтобы просмотреть сообщения пользователя, т.е. когда я добавляю фальшивого пользователя, добавляю их в базу данных, а затем устанавливаю этого пользователя равным переменной user в командной строке и введите user.posts Я получаю следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1193, in _execute_context
    context)
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\default.py", line 509, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: no such column: post.date_posted

The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\attributes.py", line 242, in __get__
        return self.impl.get(instance_state(instance), dict_)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\attributes.py", line 601, in get
        value = self.callable_(state, passive)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\strategies.py", line 631, in _load_for_state
        session, state, primary_key_identity, passive)
      File "<string>", line 1, in <lambda>
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\strategies.py", line 771, in _emit_lazyload
        with_post_criteria(set_default_params).all()
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\ext\baked.py", line 457, in all
        return list(self)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\ext\baked.py", line 364, in __iter__
        return q._execute_and_instances(context)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\query.py", line 3018, in _execute_and_instances
        result = conn.execute(querycontext.statement, self._params)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 948, in execute
        return meth(self, multiparams, params)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\sql\elements.py", line 269, in _execute_on_connection
        return connection._execute_clauseelement(self, multiparams, params)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1060, in _execute_clauseelement
        compiled_sql, distilled_params
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1200, in _execute_context
        context)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1413, in _handle_dbapi_exception
        exc_info
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\util\compat.py", line 265, in raise_from_cause
        reraise(type(exception), exception, tb=exc_tb, cause=cause)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\util\compat.py", line 248, in reraise
        raise value.with_traceback(tb)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1193, in _execute_context
        context)
      File "C:\Users\Ben\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\default.py", line 509, in do_execute
        cursor.execute(statement, parameters)
    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: post.date_posted [SQL: 'SELECT post.id AS post_id, post.title AS post_title, post.date_posted AS post_date_posted, post.content AS post_content, post.user_id AS post_user_id \nFROM post \nWHERE ? = post.user_id'] [parameters: (3,)] (Background on this error at: http://sqlalche.me/e/e3q8)

Я бы очень признателен за помощь в выяснении, в чем проблема, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...