繁体   English   中英

SQL炼金术中的多对多关系

[英]Many-Many Relationship in SQL Alchemy

我在SQLAlchemy中定义了多对多关系

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'))

现在我是Flask / 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()

但这给我一个错误,表明我的外键约束已被违反。 我做错了什么,我需要在建立这种关系之前将Tweets添加到我的tweets表中。

还有什么区别

class ClassName(db.Model)

class ClassName(Base)

发现我的错误

tweet2user = db.Table('tweet2user',
db.Column('tweet_id', db.Integer, db.ForeignKey('users.uid')) <<<...matching to wrong table haha,
db.Column('user_id', db.Integer, db.ForeignKey('tweets.uid')) <<<...same here
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM