В настоящее время я следую этой серии учебника о том, как создать сайт с 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)
Я бы очень признателен за помощь в выяснении, в чем проблема, спасибо!