在Django中更改mysql-python(MySQLdb)的CLIENT_FOUND_ROWS标志?
技术问答
333 人阅读
|
0 人回复
|
2023-09-11
|
我INSERT ... ON DUPLICATE KEY UPDATE在正常的Django项目中对MySQL
( R, q$ T: j3 e0 k2 z5.5行造成不匹配cursor.rowcount的问题0 J. |6 A/ f, M7 [2 E3 V7 r
根据文档:
. ^. e! S# I6 B0 Y
/ v7 t. u4 {) k3 ?0 W对于INSERT … ON DUPLICATE KEY) s* r# w( s4 U. w9 Z+ [. `2 t& b
UPDATE语句,如果将行作为新行插入,则每行的受影响行值为1;如果更新了现有行,则为2;如果将现有行设置为当前值,则为0。 。
+ W. z ` [* Y& g0 b2 g如果指定CLIENT_FOUND_ROWS标志 ,则在将现有行设置为其当前值的情况下,受影响的行值为1(而不是0)。1 f; U$ u7 @* v) i! J3 W1 _
; N# v% S5 C9 i W! L/ ]所以我尝试了一下,似乎在mysql shell中,重复该INSERT ... ON DUPLICATE KEY UPDATE语句将显示
2 I3 A$ \ b) y* B" s* D% S/ v& t9 {2 Y9 j0 ?' l
查询正常,受影响的0行(0.00秒)
: u# O5 O: u6 R9 j' [% u2 C
0 p$ N# B2 H& I! K在mysql-python(导入MySQLdb)中,
2 e* K, @3 o/ F7 G' }9 o" F; ]" Y/ Jcursor.rowcount 无论插入/更新/什么都没有更新,将始终为1
9 n% z( {/ G8 k L, W1 T- U我到处搜索,找不到CLIENT_FOUND_ROWS在Django中更改标志的方法。有人知道吗?. N" g. b G$ _, P1 i
( f v" v+ }! c! G7 x( [8 ]解决方案: |
|
|
|
|
|