回答

收藏

在Django中更改mysql-python(MySQLdb)的CLIENT_FOUND_ROWS标志?

技术问答 技术问答 456 人阅读 | 0 人回复 | 2023-09-11

我INSERT ... ON DUPLICATE KEY UPDATE在正常的Django项目中对MySQL
& j8 y2 r' k. V/ k7 T1 W2 a. O* p6 B5.5行造成不匹配cursor.rowcount的问题
0 j1 U% k" r, _0 G( i根据文档:" w; x; S& Z0 w" d4 c7 v  a
, Y) q* H$ X; h( S
对于INSERT … ON DUPLICATE KEY3 Y! ^( f8 O* ?: S3 X4 ~
UPDATE语句,如果将行作为新行插入,则每行的受影响行值为1;如果更新了现有行,则为2;如果将现有行设置为当前值,则为0。 。+ |7 y. M& @7 v6 a; R' i
如果指定CLIENT_FOUND_ROWS标志 ,则在将现有行设置为其当前值的情况下,受影响的行值为1(而不是0)。: d9 R$ D% k& U6 @% ?+ c0 g
- {7 E$ h0 \& |5 I
所以我尝试了一下,似乎在mysql shell中,重复该INSERT ... ON DUPLICATE KEY UPDATE语句将显示% a; _: V5 ]2 ^3 [! ^0 \8 D  V9 r
6 L$ T; M2 ?$ F- ]# E3 x
查询正常,受影响的0行(0.00秒)
" p$ p6 ?5 Y2 L2 x

" a8 E) z! Q8 K在mysql-python(导入MySQLdb)中,
8 ]; j3 l* k3 R& ?+ v( mcursor.rowcount 无论插入/更新/什么都没有更新,将始终为1" N) u  t5 v2 T( d6 q+ |
我到处搜索,找不到CLIENT_FOUND_ROWS在Django中更改标志的方法。有人知道吗?5 V& d9 s# ], Q& _5 b6 M0 ?4 p  l
               
; h9 h8 r3 d8 H  o6 X7 t" H$ V解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则