gpt4 book ai didi

python - 为 mysql-python (MySQLdb) 更改 django 中的 CLIENT_FOUND_ROWS 标志?

转载 作者:行者123 更新时间:2023-11-30 23:13:10 27 4
gpt4 key购买 nike

我在使用 MySQL 5.5 INSERT ... ON DUPLICATE KEY UPDATE 行时遇到问题,在正常的 Django 项目中 cursor.rowcount 不匹配

根据 doc :

For INSERT ... ON DUPLICATE KEY UPDATE statements, the affected-rows value per row is 1 if the row is inserted as a new row, 2 if an existing row is updated, and 0 if an existing row is set to its current values. If you specify the CLIENT_FOUND_ROWS flag, the affected-rows value is 1 (not 0) if an existing row is set to its current values.

所以我试了一下,似乎在mysql shell中,重复INSERT ... ON DUPLICATE KEY UPDATE语句会显示

Query OK, 0 rows affected (0.00 sec)

在 mysql-python 中(导入 MySQLdb),

cursor.rowcount 将始终为 1,无论插入/更新/无更新

我到处搜索,找不到在 Django 中更改 CLIENT_FOUND_ROWS 标志的方法。谁知道怎么做?

最佳答案

好的,我知道怎么做了。

在 django/db/backends/mysql/base.py 中有

kwargs['client_flag'] = CLIENT.FOUND_ROWS
kwargs.update(settings_dict['OPTIONS'])

从源代码我们可以像这样更改 django 项目 settings.py

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
'OPTIONS': {
'client_flag': 0
}
}
}

关于python - 为 mysql-python (MySQLdb) 更改 django 中的 CLIENT_FOUND_ROWS 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com