Flask + SQLAlchemy - 缺少context.current_parameters进行更新

时间:2018-04-18 10:40:52

标签: python flask sqlalchemy

我的问题有点具体: 在我的项目中,我需要使用Miguel的提示创建非重音名称:SQLALCHEMY ignore accents on query

我的更新代码:

from unidecode import unidecode
def unaccent(context):
    return unidecode(context.current_parameters['name'])

class MyModel(db.Model):
    id = Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(64))           # NEW COLUMN 
    name = db.Column(db.String(128))
    name_unaccented = db.Column(db.String(128), default=unaccent, onupdate=unaccent, index=True)

当我更新两列时,一切正常。当我更新唯一的"名称"时,一切正常。专栏也是。

但我有问题,当我只需要更新" first_name"列(不更新"名称"列)。

当我尝试这个时,我的陈述以错误结束:

    StatementError: (builtins.KeyError) 'name' [SQL: 'UPDATE subjects SET first_name=?, name_unaccented=? WHERE subjects.id = ?'] [parameters: [{'first_name': 'Some Name', 'subjects_id': 5}]]

有人想知道解决这个问题吗?

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

好的,我有"解决方案"。 我不得不创建另一个函数:

$update_status

和列' name_unaccented'从表单请求后手动更新。

def remove_accents(string):
    return unidecode(string).lower()

不是解决方案,但我的目的还可以。