sqlite3でレコードが存在しない場合にINSERTするが、実行できない

実現したいこと

新規レコードをテーブルに挿入する時、そのレコードが既にあるかどうかを判定してから挿入したい。

前提

SELECT文で対象のレコードを取得し、レコードが存在しているかどうか判別する。レコードが存在しない場合、新規でINSERTし、既に登録されている場合はスキップする。

発生している問題・エラーメッセージ

対象テーブルからレコードをSELECTし、存在しているかどうは判別して、存在していない場合は、INSERTするようにしているが、INSERTできない。SQL文の問題ではなく、存在判定の条件がおかしいと思われる。

下記コードの「cur.fetchone()」でレコードが存在しない場合はNoneを返すが、if文でNoneの場合にINSERTを実行するようにしているが、このif文の条件を満たさない。

該当のソースコード

python

12 cur.execute("SELECT * FROM T_DIVIDEND_RECORD " +3 "WHERE " +4 "fund_code =? AND " +5 "dividend_date =?", (int_fund_code, str_dividend_date, )6 )7 8 if cur.fetchone() is None:9 10 cur.execute("INSERT INTO T_DIVIDEND_RECORD(" +11 "fund_code, " +12 "fund_name, " +13 "dividend_date, " +14 "dividend_amount ) " +15 "values(" +16 "?, " +17 "?, " +18 "?, " +19 "?);",20 (int_fund_code,21 str_fund_name,22 str_dividend_date,23 str_dividend_amount 24 )25 )26 27 conn.commit()28 #conn.rollback()29 30 elif cur.fetchone() is not None:31 32 pass

試したこと

if文を下記のように書き換えて試してみた

①:if cur.fetchone() == "None":
②:if cur.fetchone() == False:
③:if cur.fetchone():

SELECT文は問題なくレコードが取れること、INSERT文も問題なく登録できることを確認済み。

ご教授頂けますと幸いです。

コメントを投稿

0 コメント