1
У меня есть отношения многие ко многим определенным в SQLAlchemyмного-много отношений в SQL алхимии
tweet2user = db.Table('tweet2user',
db.Column('tweet_id', db.Integer, db.ForeignKey('users.uid')),
db.Column('user_id', db.Integer, db.ForeignKey('tweets.uid'))
)
где чириканье
class Tweet(db.Model):
__tablename__ = 'tweets'
uid = db.Column(db.Integer, primary_key=True)
tweet = db.Column(db.String(140))
sentiment = db.Column(db.String(100))
sentimentValue = db.Column(db.String(20))
и соответствующая часть пользователей является
class User(db.Model):
tweets = db.relationship('Tweet', secondary=tweet2user,
backref=db.backref('tweets', lazy='dynamic'))
Теперь им новый Колба/SQLAlchemy/Python, так это то, как им пытается добавить к отношениям
for item in data:
tweetText = item['tweet']
sentiment = item['data']['type']
sentimentValue = item['data']['score']
tweet = Tweet(tweetText,sentiment,str(sentimentValue))
tweets.append(tweet)
if 'email' not in session:
return redirect(url_for('signin'))
user = User.query.filter_by(email = session['email']).first()
user.tweets = tweets
db.session.commit()
Однако это дает мне ошибку говоря мои ограничения внешнего ключа, были нарушены. Что я делаю неправильно, мне нужно добавить твиты в таблицу твитов, прежде чем делать это.
также то, что является разностное между
class ClassName(db.Model)
и
class ClassName(Base)
Разница между '' Base' и db.Model' является то, что вам, как правило, создайте свою собственную базу, если вы просто используете SQLAlchemy. Тем не менее, Flask-SQLAlchemy уже создал класс «Base» для вас, чтобы он мог знать о ваших классах и даже настраивал его так, что при использовании 'User.query' вы получаете дополнительные методы (например, метод get_or_404), которые не являются частью пакета SQLAlchemy. Дополнительную информацию об этих методах см. В документе Flask-SQLAlchemy [docs] (http://pythonhosted.org/Flask-SQLAlchemy/api.html#models). –