我有一个日本汉字列表,看起来像:
kanji_n3 = ['政', '議', '民', '連'] # But then with 367 Kanji
我有两个表:TableKanji
和{TableMisc
有一个名为“jlpt”的列,其中一些列当前的值为2
,但如果汉字在kanji_n3
中,则必须将其更新为值3
。在
在表格类.py在
^{pr2}$所以我提出的问题是,汉字起源_索引.py公司名称:
import sqlalchemy as sqla
import sqlalchemy.orm as sqlo
from tableclass import TableKanji, TableMisc
kanji_n3 = ['政', '議', '民', '連'] # But then with 367 Kanji
session.query(TableMisc)\
.filter(TableMisc.jlpt == 2).filter(TableKanji.character in kanji_n3)\
.update({TableMisc.jlpt: TableMisc.jlpt + 1}, synchronize_session='fetch')
此运行成功,但不更新任何内容。输出:
2016-10-18 04:05:53,908 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2016-10-18 04:05:53,908 INFO sqlalchemy.engine.base.Engine ()
2016-10-18 04:05:53,908 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2016-10-18 04:05:53,909 INFO sqlalchemy.engine.base.Engine ()
2016-10-18 04:05:53,909 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2016-10-18 04:05:53,909 INFO sqlalchemy.engine.base.Engine SELECT "Misc".kanji_id AS "Misc_kanji_id"
FROM "Misc"
WHERE 0 = 1
2016-10-18 04:05:53,909 INFO sqlalchemy.engine.base.Engine ()
2016-10-18 04:05:53,910 INFO sqlalchemy.engine.base.Engine UPDATE "Misc" SET jlpt=("Misc".jlpt + ?) WHERE 0 = 1
2016-10-18 04:05:53,910 INFO sqlalchemy.engine.base.Engine (1,)
2016-10-18 04:05:53,911 INFO sqlalchemy.engine.base.Engine COMMIT
如何更新当前值为2的TableMisc.jlpt
,以及其中的位置表汉字.字符在kanji_n3
中?我的in kanji_n3
语句不是这样工作的吗?我还试图添加一个.outerjoin(TableKanji)
,但结果是:
sqlalchemy.exc.InvalidRequestError: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called
似乎您的目的是更新联接表。并非所有数据库都支持此功能。在
首先应该使用^{} 方法,而不是
in
运算符。在您可以先选择,然后按如下方式更新所有选定的记录:
相关问题 更多 >
编程相关推荐