私はFlask-SQLAlchemyチュートリアルに従っています。Python2.6にFlask0.9、sqlalchemy 0.7.8、flask-sqlalchemy0.16があります。(そして私はEclipseで作業します)
(チュートリアルはここにあります:http://packages.python.org/Flask-SQLAlchemy/models.html)
男性と財布の2つのクラスがあります。1-1の関係があります。(各人は自分の財布を持っています)
class Man(db.Model):
sid = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=False)
wallet = db.relationship('Wallet', backref='man', lazy='dynamic', uselist=False)
def __init__(self, wallet):
self.wallet = wallet
class Wallet(db.Model):
sid = db.Column(db.Integer, primary_key=True)
account = db.Column(db.Integer)
manId = db.Column(db.Integer, db.ForeignKey('man.sid'))
def __init__(self, account):
self.account = account
「メイン」モジュールで、データベースを作成します。
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:PATH'
db = SQLAlchemy(app)
これとまったく同じモジュールで、私は財布を男性に取り付けようとします:
if __name__ == "__main__":
db.create_all()
w1 = Wallet(132)
w2 = Wallet(18)
db.session.add(w1)
db.session.add(w2)
db.session.commit()
man1 = Man(w1)
db.session.add(man1)
db.session.commit()
しかし、私はこのエラーを受け取ります:
TypeError: 'Wallet' object is not iterable
なぜこのようなエラーが発生するのか理解できません。マップされたオブジェクトを追加する正しい方法は何ですか?
PS:私はSQLAlchemyチュートリアルに参加してきましたが、彼らは物事を異なって宣言すると信じています:
class Man(db.Model):
sid = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=False)
wallet = db.relationship('Wallet', backref='man', lazy='dynamic', uselist=False)
manId = db.Column(db.Integer, db.ForeignKey('man.sid'))
def __init__(self, wallet):
self.wallet = wallet
class Wallet(db.Model):
sid = db.Column(db.Integer, primary_key=True)
account = db.Column(db.Integer)
def __init__(self, account):
self.account = account
どのチュートリアルを信頼する必要がありますか?
どうもありがとうございます !