与SQLAlchemy使用1-N关系

时间:2014-08-07 21:36:07

标签: python flask-sqlalchemy

在使用以下类定义简单的1-n关系后:

class User(db.Model):
__tablename__ = 'user'
UserID = db.Column(db.Integer, primary_key=True)
Name = db.Column(db.String(80), unique=True)
emails = db.relationship('email')

def __init__(self, username):
    self.Name = username


class Email(db.Model):
    __tablename__ = 'email'
    EmailID = db.Column(db.Integer, primary_key=True)
    Email = db.Column(db.String(80), unique=True)
    User = db.Column(db.Integer,db.ForeignKey('user.UserID'))

    def __init__(self, mail):
    self.Email = mail

我想创建一个用户并添加一些邮件,然后使用:

将其保存到数据库
username = "serkan1"
newuser = User(username)
newuser.emails[Email(Email='serkan@ismygirl.com'),Email(Email = 'eddfsdfq@ff.com')]
db.session.add(product)
db.session.commit()
return "ok"

但我得到错误:

ArgumentError: relationship 'emails' expects a class or a mapper argument (received: <class 'sqlalchemy.sql.schema.Table'>)

我如何简单地创建一个用户,添加一些带有1-n架构的电子邮件并将其保存到数据库?

1 个答案:

答案 0 :(得分:4)

尝试更改此行:

emails = db.relationship('email')

为:

emails = db.relationship('Email')

这将引用您的Email类而不是您的email表,如错误消息所述。