1

critical_severity_list以下のように「 」という名前のリストがあります。[30, 40]

以下のように IN 句で選択を実行したい:

cursor = connection.cursor()

que = 'select * from tm_txn_age_severity_config where txn_state_id = %s and txn_type_id = %s and txn_age_severity_id in ( %s)'

in_ids = ', '.join(map(lambda x: '%s', critical_severity_list))

que = que % ('%s', in_ids)

bind_var_list = [] 

bind_var_list.append(rec[1])

bind_var_list.append(rec[2])

bind_var_list.extend(critical_severity_list)

cursor.execute(que, bind_var_list)

result = cursor.fetchall()

次のエラーが表示されます: 書式文字列の引数が不足しています

誰かが解決策を手伝ってくれますか....??

4

2 に答える 2

0

ここでエラーが発生します:

que = 'select * from tm_txn_age_severity_config where txn_state_id = %s and txn_type_id = %s and txn_age_severity_id in ( %s)'
in_ids = ', '.join(map(lambda x: '%s', critical_severity_list))
que = que % ('%s', in_ids)

いくつかの引数を使用してフォーマットqueしていますが、十分な引数を提供していません。にはqueが 3 回出現しますが、演算子を%s使用して文字列をフォーマットする場合は、引数を 2 つしか指定していません。%

例えば:

>>> "%s %s" % "a"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string

(1 つの引数が提供され、2 つが期待されます)

于 2012-06-19T06:26:55.383 に答える
0

これがあなたが望むものであることを願っています:

critical_severity_list=[30,40]
temp=['%s']+critical_severity_list
que = 'select * from tm_txn_age_severity_config where txn_state_id = %s and txn_type_id = %s and txn_age_severity_id in ( %s)'
que = que % tuple(i for i in temp)
print(que)

出力:

select * from tm_txn_age_severity_config where txn_state_id = %s and txn_type_id = 30 and txn_age_severity_id in ( 40)
于 2012-06-19T06:28:27.820 に答える