我有两个模型,它们是一对多关系。查询||-o<--特殊需要
我希望通过使用Flask SQLalchemy中构建的关系,能够在Specialneed中插入多条记录。
我可以在Specialneed中插入一条记录,如下所示:
applicationParams={
'startdate': request.form['startdate'],
'enddate': request.form['enddate'],
'starttime': request.form['starttime'],
'endtime': request.form['endtime'],
'budget': request.form['budget'],
'specialneed': [SpecialNeed(description=request.form['specialNeeds'])]}但是当我试图给‘specialneed’-参数一个在表单中输入的特殊需求的列表时,它给出了错误:
(pymysql.err.InternalError) (1241, 'Operand should contain 1 column(s)')
[SQL: 'INSERT INTO specialneed (description, iid) VALUES
(%(description)s, %(iid)s)'] [parameters:
{'description': ['Speaks English', 'Can sing'], 'iid': 11}]当我给它一个列表时,它在我的代码中看起来像这样:
applicationParams={
'startdate': request.form['startdate'],
'enddate': request.form['enddate'],
'starttime': request.form['starttime'],
'endtime': request.form['endtime'],
'budget': request.form['budget'],
'specialneed': [SpecialNeed(description=[sn.strip() for sn in request.form['specialNeeds'].split('.')])]}sql insert查询应如下所示才能成功:
SQL: 'INSERT INTO specialneed (description, iid) VALUES
(%(description)s, %(iid)s)'] [parameters:
{'description': 'Speaks English', 'iid': 11},
{'description': 'Can sing', 'iid': 11}]我该怎么管理它呢?
发布于 2020-02-07 15:56:44
模型包括
class User(db.Model, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')
usermobilenumber = db.Column(db.String(100, collation='NOCASE'), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, server_default='')
roles = db.relationship('UserRoles')
class UserRoles(db.Model):
__tablename__ = 'user_roles'
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))通过for循环迭代请求值并追加它。
@app.route('/usercreation', methods=['POST','GET'])
def usercreation():
if request.method == 'POST':
usermobilenumber = request.form['mobilenumber']
userpassword = request.form['password']
# roless is a list(many values)
roless = request.form.getlist('roles')
user = User(username=usermobilenumber,password =
generate_password_hash(userpassword))
#append list values into model object
for r in roless:
role = UserRoles(role_id=r)
user.roles.append(role)
db.session.add(user)
db.session.commit()发布于 2017-05-23 18:43:33
我通过一个朋友找到了答案。如果我更改此部分:
'specialneed': [SpecialNeed(description=[sn.strip() for sn in request.form['specialNeeds'].split('.')])]要这样做:
'specialneed': [SpecialNeed(description=sn.strip()) for sn in reuqest.form['specialNeeds'].split(".")]看起来不错。有关列表理解的更多信息,请查看this site。
https://stackoverflow.com/questions/44132007
复制相似问题