Python 2.7 如何使用python中字典的值在数据库中进行查询?

Python 2.7 如何使用python中字典的值在数据库中进行查询?,python-2.7,sorting,dictionary,key-value,pypyodbc,Python 2.7,Sorting,Dictionary,Key Value,Pypyodbc,例如,我有我的字典:my_dict={'2':'偶数','1':'奇数','3':'奇数'}这是我的数据库: +---------+--------+ |数字|字符串| +---------+--------+ |5 | 5| |4 |四| |3 |三| |2 | 2| |1 |一| +---------+--------+ 在my_dict字典中,使用它们的键,我想在我的数据库(SQL SERVER)中获取它们的字符串值,并使用它们的值,按以下顺序对它们的字符串值进行排序: 奇偶奇数喜欢这样吗

例如,我有我的字典:
my_dict={'2':'偶数','1':'奇数','3':'奇数'}
这是我的数据库:

+---------+--------+
|数字|字符串|
+---------+--------+
|5 | 5|
|4 |四|
|3 |三|
|2 | 2|
|1 |一|
+---------+--------+

my_dict
字典中,使用它们的
,我想在我的数据库(SQL SERVER)中获取它们的
字符串
值,并使用它们的
,按以下顺序对它们的
字符串
值进行排序:

奇偶奇数
喜欢这样吗

一二三


然后像这样打印输出:
让我们数一二三
。实际上,我只是基于Jisoo的问题,因为我们非常相似,但我的问题是关于字典的。

这个问题有两个方面:第一个是SQL查询部分。这是最简单的一个:

假设数据库表类似于

 CREATE TABLE number (value INTEGER, name STRING);
SQL或多或少是简单的

 from contextlib import closing

 [...]

 my_dict = {'2':'even','1':'odd','3':'odd'}

 # database connection dbc, see python dbapi
 with closing(dbc.cursor()) as cur:
     cur.execute('SELECT value, name FROM number WHERE value IN (1, 2, 3)')
     for value, name in cur:              
         print "%s is %s" % (name, my_dict[str(value)])
这里的python问题是将字典键放入子句中的SQL
,因为DBAPI2参数扩展无法直接实现这一点(请参阅)

因此:

 my_dict = {'2':'even','1':'odd','3':'odd'}

 # database connection dbc, see python dbapi
 with closing(dbc.cursor()) as cur:
     stmt = 'SELECT value, name FROM number WHERE id IN (%s)' % ','.join('?' for i in my_dict))
     cur.execute(stmt, my_dict.keys())
     for value, name in cur:              
         print "%s is %s" % (name, my_dict[str(value)])

还有一个问题是,
“?”
取决于所涉及数据库的参数样式。

您能否详细说明预期的排序顺序?因为
(“偶数”、“奇数”、“奇数”)
没有总的顺序,也就是说,按照我的阅读方式,顺序会模棱两可。哦,是的,很抱歉,我没有意识到这一点。让我们忽略序列和排序,而是使用它们的值,显示
键的
字符串
值,如下所示
2可被2整除,1不可被2整除,3不可被2整除。那可能吗?对不起,我帮不了你。不过,在您的问题中标记
pyodbc
可能会有所帮助。谢谢您的回答。我想我应该试试dbc,看看它是如何工作的。