0

たとえば、私は自分の辞書を持っています:my_dict = {'2':'even','1':'odd','3':'odd'} そして、これは私のデータベースです:

+---------+--------+ | Numeric | String | +---------+--------+ | 5 | five | | 4 | four | | 3 | three | | 2 | two | | 1 | one | +---------+--------+

my_dict辞書では、 を使用して、データベース (SQL SERVER) で値keysを取得し、を使用して、値を次の順序で並べ替えます。StringvaluesString

odd - even - oddこれが好きになる

one two three.

出力を次のように出力しますLet's count one two three。実際、私はJisooの質問に基づいていますデータベースでタプルのリストをクエリすることは非常に似ていますが、私の場合は辞書に関するものです。

4

1 に答える 1

0

この質問には 2 つの側面があります。1 つ目は、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 の問題は、SQLIN句に辞書キーを取得することです。これは、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)])

'?'関連するデータベースのパラメータースタイルに依存することも 1 つです。

于 2015-03-06T09:02:13.087 に答える