在Django中更改mysql-python(MySQLdb)的CLIENT_FOUND_ROWS标志?
技术问答
457 人阅读
|
0 人回复
|
2023-09-11
|
我INSERT ... ON DUPLICATE KEY UPDATE在正常的Django项目中对MySQL
. `: N4 x9 U; `/ D t* n5.5行造成不匹配cursor.rowcount的问题
5 x c9 c# _6 c+ K根据文档:3 _, B! w8 c* ]
' V& U% F7 |$ c
对于INSERT … ON DUPLICATE KEY; b' X+ \5 I' N: E" \7 e% F
UPDATE语句,如果将行作为新行插入,则每行的受影响行值为1;如果更新了现有行,则为2;如果将现有行设置为当前值,则为0。 。
; Q7 r( x! d/ s3 _$ f6 e; |如果指定CLIENT_FOUND_ROWS标志 ,则在将现有行设置为其当前值的情况下,受影响的行值为1(而不是0)。
# `" {( y# q$ U6 c
# _0 T/ N8 N; T1 l' e2 J: p. }所以我尝试了一下,似乎在mysql shell中,重复该INSERT ... ON DUPLICATE KEY UPDATE语句将显示
( X7 g6 W3 N8 D1 g C, b% _7 a' S! h
6 F1 ^, @: \0 _0 q$ T5 f( x0 K/ p查询正常,受影响的0行(0.00秒)
( ?7 I4 ?1 B3 G" q8 T% z8 v) V$ q9 c2 h5 G; m9 J8 ]7 Z
在mysql-python(导入MySQLdb)中,& U6 c/ V9 }1 v4 w# G* N1 q& n
cursor.rowcount 无论插入/更新/什么都没有更新,将始终为1
! L' ?& P% B x+ t' n我到处搜索,找不到CLIENT_FOUND_ROWS在Django中更改标志的方法。有人知道吗?' {& B& a: T- F( c! y
1 Q* e0 u9 {: o) Z; Y解决方案: |
|
|
|
|
|