我有一个疑问:
def search(self, lists): //example input: lists = [1,2,3]
if not self.connected:
self.connect()
for word in lists:
query = self.cur.execute('SELECT InWords FROM Words WHERE Numeric IN (%s)' % (','.join('?'*len(lists))), lists).fetchall()
result = " ".join([x[0] for x in query])
return result
我正在使用odbc驱动程序连接sqlserver。在我的数据库中,我有3列,Numeric
列例如1,2,3,4,5
,InWords
列one,two,three,four,five
现在我想根据输入的list
的排列对输出进行排序,如下:[one,two,three]
。我注意到,查询不会根据输入显示输出,而是每当查询从数据库中的list
匹配中找到单词时,就会显示它。示例I不按特定顺序输入Numeric
列(3,5,1,2,4)
中的数字,list
变量包含[1,3,2]
,sql语句显示此输出:(three,one,two)
而不是[one,three,two]
。你知道吗
我不认为您可以创建这样的SQL查询来按所需的顺序返回数据。SQL在集合上工作,所以顺序是不可逆的。它可以由非常大的
UNION
强制执行,但我认为您可以创建同时返回Numeric
和InWords
的查询,将其存储在Python dict中,然后按此dict排序:您还可以对每个数字进行SQL查询。我想到这样的代码:
PS我还没有测试过,这只是一个例子。你知道吗
相关问题 更多 >
编程相关推荐