0
我在SQL查詢方面完全缺乏知識,現在正困擾着我。Flask-SQLAlchemy - 如何將值附加到列?
在flask-Sqlalchemy中,如何將一個值附加到已經有一個值的列而不替換已經存在的值?
我試過db.session.merge(用戶)和db.session.add(用戶),但最終都替換了列中的值。
更確切地說,Users表中有一個名爲classes_id的列,用於記錄他出席的健身課程的「id」字段。因此,隨着時間的推移,該字段需要更新許多其他類「id」。
以防萬一,這裏的模型
class Classes(db.Model):
__tablename__= 'classes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
date = db.Column(db.DateTime)
participants = db.relationship('User', backref='classes', lazy='dynamic')
status = db.Column(db.Integer) #1 = open, 0 = closed
class User(UserMixin,db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True)
email = db.Column(db.String(64),unique=True,index=True)
firstname = db.Column(db.String(64))
lastname = db.Column(db.String(64))
fullname = db.Column(db.String(64))
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
password_hash = db.Column(db.String(128))
member_since = db.Column(db.DateTime(), default=datetime.utcnow)
last_seen = db.Column(db.DateTime(), default=datetime.utcnow)
notes = db.Column(db.Text())
classes_id = db.Column(db.Integer, db.ForeignKey("classes.id"))
而views.py
@main.route('/add_attendees/<int:class_id>',methods=['GET','POST'])
@login_required
def add_attendees(class_id):
form = Find_member()
if form.validate_on_submit():
fullname = form.member_name.data
find_username = fullname.find('-')
username = fullname[find_username + 2:]
user = User.query.filter_by(username=username).first()
user.classes_id = class_id
db.session.merge(user)
db.session.commit()
return redirect(url_for('.add_attendees',class_id = class_id))
return render_template('members_list.html',form=form)
非常感謝。你把我放在正確的軌道上。我配置了多對多的關係,並使用.append就像你所描述的那樣,現在它工作起來非常棒!(因爲我使用的是flask-sqlalchemy,所以我不得不修改代碼,但現在我知道在哪些部分doc看看!) 另一張桌子是創建的,持有classe.id和user.id,我現在可以查詢誰去哪個班級等。2豎起大拇指! – Kinwolf
不客氣。看來,這個問題不是特定於SQLAlchemy或瓶子。它指的是常見的關係數據庫理論。 –