0

PostgreSQL を DB として使用する必要がある Web サイトを Python で作成しています。テーブルを更新するための準備済みステートメントを作成したかったので、次のように作成しようとしましたset:

a=dict(b=3, c='d', x=10)
keys=a.keys()
print ",".join([keys[i] + "=$" + str(i + 1) for i in range(0, len(keys))])

これからの出力は次のようになります

x=$1,c=$2,b=$3

これは、更新用の準備済みステートメントを生成するために使用できます。

知りたかった:

  • これに代わるより良い方法はありますか?
  • これはコストのかかる操作ですか (len(keys) を変数に入れる必要がありますか、それとも操作ですかO(1))
  • 内部で実行されている複数の for ループはありますか? キーのディープ コピーを返しますかa.keys()、それとも単なる参照ですか?
4

1 に答える 1

3

あなたはうまくやっています。同じコードのもう少し読みやすいバージョンを使用します。

a=dict(b=3, c='d', x=10)
print ",".join(['{0}=${1}'.format(k, i) for i, k in enumerate(sorted(a))])

キーをソートしました(辞書には固定された順序がありません)。

Python PostgreSQL データベース アダプターはDBAPI v2.0仕様に準拠しています。これは、SQL パラメーターの使用をサポートし、データベースにステートメントを準備する機会を与えます。ただし、これらは異なる構文を使用し、通常は仕様で指定されているバリアントの 1 つまたは 2 つを使用します。

于 2013-02-11T18:53:40.013 に答える