我的 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 显然是整数的表:
在 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)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |