【发布时间】:2012-06-27 02:26:12
【问题描述】:
我正在尝试创建如下语句:
SELECT * FROM table WHERE provider IN ('provider1', 'provider2', ...)
但是,我在 Django API 的字符串格式方面遇到了一些问题。到目前为止,这是我所拥有的:
profile = request.user.get_profile()
providers = profile.provider.values_list('provider', flat=True) # [u'provider1', u'provider2']
providers = tuple[str(item) for item in providers] # ('provider1', 'provider2')
SQL = "SELECT * FROM table WHERE provider IN %s"
args = (providers,)
cursor.execute(sql,args)
DatabaseError
(1241, 'Operand should contain 1 column(s)')
【问题讨论】:
-
很好奇。当您已经拥有 django ORM 时,为什么还要执行原始 sql
IN查询? -
@jdi 这是一个很长的 sql 查询,我正在根据一些用户输入的值(大约 20 行)进行字符串连接。
-
ORM 有聚合。但我想我只需要相信你的话,ORM 做不到 :-)
-
我在这里与@jdi 在一起-您要在ORM 中查询的表是什么? (稍作修改:我不是 with jdi,我的意思是有点混乱的观点......)
-
@JonClements:乔恩,我被冒犯了。我们谈到在公共场合要诚实。大卫,我们在一起,我们对数据库 ORM 也有相似的看法