您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Django Raw SQL中将列表或元组作为参数传递

在Django Raw SQL中将列表或元组作为参数传递

将列表转换为元组在Postgres中可以正常工作,尽管在sqlite3下相同的代码DatabaseError: near "?": Syntax error也会失败,因此看来这是后端特定的。您的代码行将变为:

results = MMCode.objects.raw('select assigner, assignee from mm_code where date between %s and %s and country_code in %s',[fromdate,todate,tuple(region)])

我在一个干净的Django 1.5.1项目上用bar / models.py中的以下代码对此进行了测试:

from django.db import models

class MMCode(models.Model):
    assigner = models.CharField(max_length=100)
    assignee = models.CharField(max_length=100)
    date = models.DateField()
    country_code = models.CharField(max_length=2)

然后在外壳上:

>>> from datetime import date
>>> from bar.models import MMCode
>>> 
>>> regions = ['US', 'CA', 'UK']
>>> fromdate = date.today()
>>> todate = date.today()
>>> 
>>> results = MMCode.objects.raw('select id, assigner, assignee from bar_mmcode where date between %s and %s and country_code in %s',[fromdate,todate,tuple(regions)])
>>> list(results)
[]

(请注意,查询行在此处稍作更改,以使用Django创建的认表名,并id输出包括该列,以便ORM不会抱怨)

SQLServer 2022/1/1 18:37:05 有490人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶