ホーム>source

一般的にmysql dbに値を挿入するpythonコードがあります。リスト field_split の長さをチェックします  可変文字列 var_string を構築します 。私が立ち往生しているのは、これを変更して ON DUPLICATE KEY UPDATE user=user_id_var をサポートしたいということです 。長い文字列を作成していた場合、これを行う方法は知っていますが、2つの値を cursor.execute に渡すことでそれを行う方法がわかりませんでした 。

var_string = ', '.join(['%s'] * len(field_split))
query_string = 'INSERT into ' + table_name 
query_string = query_string + ' VALUES (%s);' % var_string  #query_string = 'INSERT INTO tbl_rtp_GET_FBA_ESTIMATED_FBA_FEES_TXT_DATA VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);'
cursor.execute(query_string, field_split)
db.commit()

あなたの答え
  • 解決した方法 # 1

    クエリを作成し、すべてのパラメーターを単一のシーケンスとして cursor.execute() に渡すだけです 。 str.format() を使用することもできます  低速になる可能性のある複数の文字列連結を回避するには:

    var_string = ', '.join(['%s'] * len(field_split))
    query_string = 'INSERT into {} VALUES ({}) ON DUPLICATE KEY UPDATE user=%s'.format(
        table_name, var_string)
    cursor.execute(query_string, field_split + [user_id_var])
    db.commit()
    
    

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ python - IDLEから呼び出されたときにNumpyloadtxtが機能し、シェルから呼び出されたときにIOErrorが発生するのはなぜですか?