Python sqlalchemy按函数更新

Python sqlalchemy按函数更新,python,sqlalchemy,Python,Sqlalchemy,我想用一些函数更新表t中的c列,例如 但在本例中,我得到了类似的错误,参数2必须是str,而不是InstrumentedAttribute。似乎我无法直接将函数映射到表 我知道我可以使用中的示例通过session.query和session.commit更新数据。但我仍然想知道是否可以使用一些映射函数来实现这一点。您正在混合Python和SQLunicodedata.normalize()是一个Python函数,在现场进行评估。它需要一个字符串进行规范化,但您给了它一个插入指令的属性。为了形成批

我想用一些函数更新表
t
中的
c
列,例如

但在本例中,我得到了类似
的错误,参数2必须是str,而不是InstrumentedAttribute
。似乎我无法直接将函数映射到表


我知道我可以使用中的示例通过
session.query
session.commit
更新数据。但我仍然想知道是否可以使用一些映射函数来实现这一点。

您正在混合Python和SQL
unicodedata.normalize()
是一个Python函数,在现场进行评估。它需要一个字符串进行规范化,但您给了它一个插入指令的属性。为了形成批量更新查询,您必须查阅数据库文档以获得等效的SQL函数,并使用SQLAlchemy来形成SQL函数表达式。如果您使用的是SQLite,您也许可以创建一个用户定义的函数(参见文档)。谢谢您的回复。我知道Python和SQL是不同的,但是
sqlalchemy
可以将Python函数映射到从数据库中获取的数据吗?很抱歉,我想你的意思是,在UPDATE语句中没有获取的数据。您将查询发送到数据库,它将对那里的数据执行操作。需要再次指出的是,对Python函数的调用是在那里进行计算的,至少是现在的情况。如果您能在问题中包括您正在使用的数据库,这将非常有用。例如,Sqlite实际上可以在某种程度上完成您所追求的任务。当然,使用ORM,您可以获取对象、更新每个实例的c和提交。SQLAlchemy将为您发布所需的更新。非常感谢您的回答。我使用的是MySQL,我认为没有这样的函数,因为你混合了Python和SQL
unicodedata.normalize()
是一个Python函数,在现场进行评估。它需要一个字符串进行规范化,但您给了它一个插入指令的属性。为了形成批量更新查询,您必须查阅数据库文档以获得等效的SQL函数,并使用SQLAlchemy来形成SQL函数表达式。如果您使用的是SQLite,您也许可以创建一个用户定义的函数(参见文档)。谢谢您的回复。我知道Python和SQL是不同的,但是
sqlalchemy
可以将Python函数映射到从数据库中获取的数据吗?很抱歉,我想你的意思是,在UPDATE语句中没有获取的数据。您将查询发送到数据库,它将对那里的数据执行操作。需要再次指出的是,对Python函数的调用是在那里进行计算的,至少是现在的情况。如果您能在问题中包括您正在使用的数据库,这将非常有用。例如,Sqlite实际上可以在某种程度上完成您所追求的任务。当然,使用ORM,您可以获取对象、更新每个实例的c和提交。SQLAlchemy将为您发布所需的更新。非常感谢您的回答。我使用的是MySQL,我认为根据我的经验,没有这样的函数
session.query(t).update({t.c: unicodedata.normalize('NFKC',t.c)})