Django raw sql %d for ID 不适用于整数参数

Pro*_*eno 0 sqlite django

我的 Django 模型有这个原始 sql:

cursor.execute('SELECT crowdfunding_offering.offering_name FROM crowdfunding_offering WHERE crowdfunding_offering.id = %d ORDER BY crowdfunding_offering.id DESC LIMIT 1', (int(self.offering.id),))
Run Code Online (Sandbox Code Playgroud)

这是行不通的。我收到此错误:

Exception Value:    near "%": syntax error
Run Code Online (Sandbox Code Playgroud)

然后我尝试更改%d为%s,然后才有效。我认为%d用于数字参数并且%s用于字符串,但为什么它不适用于%d?

这是 id 显然是整数的表:

在此输入图像描述

AKX*_*AKX 5

在 Django 的原始 SQL 查询中,占位符始终是%s、 not%d或其他任何内容。

>>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])
Run Code Online (Sandbox Code Playgroud)

%(foo)s如果您的参数位于字典中,您也可以使用:

Person.objects.raw(
    'SELECT * FROM myapp_person WHERE last_name = %(lname)s',
    {"lname": lname},
)
Run Code Online (Sandbox Code Playgroud)