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'))
Now im new到瓶/ SQLAlchemy中/ Python的,所以這是IM如何嘗試添加到關係
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()
但是這給了我一個錯誤,說我的外鍵約束被侵犯。 我做錯了什麼,我需要添加推文到我的tweets表之前,使這種關係。
還什麼
class ClassName(db.Model)
和
class ClassName(Base)
Base'和'db.Model'之間'不同的是,你通常如果你只是使用SQLAlchemy,創建你自己的'Base'。然而,Flask-SQLAlchemy已經創建了一個'Base'類供您使用,以便它可以知道您的類,甚至調整了它,以便在使用User.query時可以獲得一些額外的方法(例如'get_or_404'方法)不屬於SQLAlchemy包。有關這些方法的更多信息,請參見Flask-SQLAlchemy [docs](http://pythonhosted.org/Flask-SQLAlchemy/api.html#models)。 –