在Django中更改mysql-python(MySQLdb)的CLIENT_FOUND_ROWS标志?
技术问答
404 人阅读
|
0 人回复
|
2023-09-11
|
我INSERT ... ON DUPLICATE KEY UPDATE在正常的Django项目中对MySQL" V: k2 o' Y$ s6 e7 q
5.5行造成不匹配cursor.rowcount的问题
/ |3 o0 Q( ?7 W) O! v u+ w根据文档:
. f9 g! p$ z! P. d
9 g% |( o( o2 |对于INSERT … ON DUPLICATE KEY
. f1 j( H* _0 M) ]/ m# ^UPDATE语句,如果将行作为新行插入,则每行的受影响行值为1;如果更新了现有行,则为2;如果将现有行设置为当前值,则为0。 。( m+ ^6 V) ^' y
如果指定CLIENT_FOUND_ROWS标志 ,则在将现有行设置为其当前值的情况下,受影响的行值为1(而不是0)。
, v0 k9 V2 ^& n6 m# X# P% \; M1 w- p4 e- C! A& g2 R. z
所以我尝试了一下,似乎在mysql shell中,重复该INSERT ... ON DUPLICATE KEY UPDATE语句将显示
0 s% n: ^) U( j- a' Y0 }0 {5 |/ p* b8 E6 q6 { a2 i$ A
查询正常,受影响的0行(0.00秒)
) h! Z& q, |* q9 M$ g% R* ?9 Z
. X+ t0 V3 m$ b在mysql-python(导入MySQLdb)中,
3 k/ G8 ^& A; D; scursor.rowcount 无论插入/更新/什么都没有更新,将始终为1/ ]' o$ N0 a5 x6 R- y( Q
我到处搜索,找不到CLIENT_FOUND_ROWS在Django中更改标志的方法。有人知道吗?
% @- L& G, I7 y1 P: c" W ; [. v6 n7 q% L- r
解决方案: |
|
|
|
|
|