【发布时间】:2015-04-28 02:52:15
【问题描述】:
我在 SQL 查询方面完全缺乏知识,现在让我很难受。
在flask-Sqlalchemy 中,如何将一个值附加到已有的列而不替换已经存在的列?
我尝试了 db.session.merge(user) 和 db.session.add(user) 但最终都替换了列中的值。
更准确地说,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)
【问题讨论】:
标签: python-3.x flask sqlalchemy flask-sqlalchemy