gpt4 book ai didi

mysql - Django DecimalField 与 MySQL 的查找不起作用

转载 作者:行者123 更新时间:2023-11-29 15:00:43 25 4
gpt4 key购买 nike

我正在从旧数据库迁移数据,该数据库包含许多表,其主键定义如下:

`id` decimal(26,0) 

id 列将包含如下所示的值:

20080313154354198004
20081217165552136057
2008080416222952067
20060510151423191000
20060510151423191000
20070710143455874025
200806239353171091

执行如下查询:

Release.objects.raw("SELECT id from games_release where legacy_id = 2008050812286746069")

有时会成功,有时会失败。如果失败,我可以从 db.connection.queries 捕获查询,将其粘贴到 MySQL 控制台,查询就会成功。我想这与 DECIMAL 类型在堆栈的各个级别(ORM -> DB 驱动程序 -> 服务器)的处理方式有关。这似乎是相关的,但到目前为止我对 CAST() 还没有任何运气:

http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html

非常感谢任何使查询可靠工作的帮助。

编辑我忘记提及的难题之一:我尝试查询的十进制值存储在最初从旧表中提取的表中。例如:

class OldModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)

class NewModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)

old = <some instance of OldModel>
new = NewModel.objects.create(id=old.id)

稍后,尝试通过objects.raw()选择“new”可能会失败。

最佳答案

找到了解决方案 - 将 Decimal 参数转换为整数并使用 %s 作为参数占位符:

Release.objects.raw("SELECT id from games_release where legacy_id = %s", [int(uc.game_release_id)])

关于mysql - Django DecimalField 与 MySQL 的查找不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217384/

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